Mai mult
MySQL - interogare de ACTUALIZARE bazate pe Interogare de SELECTARE
Am nevoie pentru a verifica (la aceeasi masa) dacă există o asociere între două evenimente bazate pe data-timp.
Un set de date va conține data de sfârșit în timp a unor evenimente și alte set de date va conține data de începere în timp pentru alte evenimente.
Dacă primul eveniment completează înainte de cel de-al doilea eveniment, atunci aș dori să-i lege.
Ceea ce am pana acum este:
SELECT name as name_A, date-time as end_DTS, id as id_A
FROM tableA WHERE criteria = 1
SELECT name as name_B, date-time as start_DTS, id as id_B
FROM tableA WHERE criteria = 2
Apoi am alăturați-vă-le:
SELECT name_A, name_B, id_A, id_B,
if(start_DTS > end_DTS,'VALID','') as validation_check
FROM tableA
LEFT JOIN tableB ON name_A = name_B
Pot apoi, pe baza validation_check domeniu, executați o interogare de ACTUALIZARE cu SELECT imbricate?
461
12
De fapt, puteți face asta în două moduri:
MySQL update se alăture sintaxa:
ANSI SQL sintaxa:
Alege oricare una pare cel mai natural pentru tine.
Sper că acest lucru funcționează pentru tine.
Ușor în MySQL:
Dacă cineva este în căutarea de a actualiza datele dintr-o bază de date la alta, indiferent care tabelul acestea sunt de orientare, trebuie să existe niște criterii pentru a face asta.
Acesta este mai bun și curat pentru toate nivelurile:
Traaa! It works mare!
Cu cele de mai sus înțelegere, puteți modifica set de câmpuri și "pe" criterii pentru a face munca ta. Puteți efectua, de asemenea, controale, apoi trage datele în tabel temp(e) și apoi executați actualizare folosind sintaxa de mai sus înlocuind masa și coloana nume.
Sper că funcționează, dacă nu lasă-mă să știu. Voi scrie exact interogare pentru tine.
Sper că acest lucru vă va ajuta în cazul în care aveți pentru a se potrivi și de a actualiza între două tabele.
Am găsit această întrebare în căutarea pentru propria mea soluție pentru o foarte complexe se alăture. Aceasta este o soluție alternativă, pentru o versiune mai complexă a problemei, care am crezut că ar putea fi util.
Am nevoie pentru a popula product_id în domeniul activităților de masă, în cazul în care activitățile sunt numerotate într-o unitate, și unități sunt numerotate într-un nivel (identificate cu ajutorul unui șir de caractere ??N), astfel că se poate identifica activitățile care utilizează un SKU ie L1U1A1. Aceste Articole sunt apoi stocate într-un tabel diferit.
Am identificat următoarele pentru a obține o listă de activity_id vs product_id:-
Am găsit că era prea complex pentru a încorpora într-o SELECTAȚI în mysql, așa că am creat un tabel temporar, și s-a alăturat cu declarația de actualizare:-
Sper ca cineva găsește acest util
Puteți actualiza valorile din alt tabel folosind inner join astfel de prognoze
Urmează de aici să știe cum să folosească această interogare http://www.voidtricks.com/mysql-inner-join-update/
sau puteți folosi selectați ca subinterogare pentru a face acest lucru
interogare a explicat în detalii aici http://www.voidtricks.com/mysql-update-from-select/
Puteți folosi:
Pentru aceeași masă,
Am avut o problema cu intrări duplicat într-un tabel în sine. Mai jos este abordările au fost de lucru pentru mine. Acesta a fost, de asemenea, susținută de @sibaz.
În cele din urmă am rezolvat-o folosind întrebările de mai jos:
DACĂ OBJECT_ID(N'tempdb..#New_format_donor_temp', N'U') NU ESTE NULL DROP TABLE #New_format_donor_temp;
selectați * în #New_format_donor_temp din DONOR_EMPLOYMENTS în cazul în care DONOR_ID ÎN ( 1, 2 )
-- Test New_format_donor_temp -- SELECTAȚI *
ACTUALIZARE de SET STATUS_CD=de_new.STATUS_CD, STATUS_REASON_CD=de_new.STATUS_REASON_CD, TYPE_CD=de_new.TYPE_CD DIN DONOR_EMPLOYMENTS CA de INNER JOIN #New_format_donor_temp CA de_new PE de_new.EMP_NO = de.EMP_NO În cazul în CARE de.DONOR_ID ÎN ( 3, 4 )
Nu am experienta cu SQL vă rugăm să informați orice abordare mai bună știi.
Mai presus de interogări sunt pentru serverul MySql.
Verifica cu interogare de mai jos.
actualizare tableA O inner join tableB B la A. name_a = B. name_b set validation_check = dacă(start_dts > end_dts, 'VALABIL', '')