Jeg trenger å sjekke (fra samme tabell) om det er en sammenheng mellom to hendelser basert på dato og klokkeslett.
Det ene settet med data vil inneholde sluttidspunktet for visse hendelser og det andre settet med data vil inneholde starttidspunktet for andre hendelser.
Hvis den første hendelsen avsluttes før den andre hendelsen, vil jeg koble dem sammen.
Det jeg har så langt er
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
Da slutter jeg meg til dem:
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
Kan jeg da, basert på validation_check-feltet mitt, kjøre en UPDATE-spørring med SELECT nestet?
Du kan faktisk gjøre dette på to måter:
MySQL update join syntaks:
UPDATE tableA a
INNER JOIN tableB b ON a.name_a = b.name_b
SET validation_check = if(start_dts > end_dts, 'VALID', '')
-- where clause can go here
ANSI SQL-syntaks:
UPDATE tableA SET validation_check =
(SELECT if(start_DTS > end_DTS, 'VALID', '') AS validation_check
FROM tableA
INNER JOIN tableB ON name_A = name_B
WHERE id_A = tableA.id_A)
Velg den som virker mest naturlig for deg.
Hvis noen ønsker å oppdatere data fra en database til en annen, uansett hvilken tabell de retter seg mot, må det være noen kriterier for å gjøre det.
Denne er bedre og ren for alle nivåer:
UPDATE dbname1.content targetTable
LEFT JOIN dbname2.someothertable sourceTable ON
targetTable.compare_field= sourceTable.compare_field
SET
targetTable.col1 = sourceTable.cola,
targetTable.col2 = sourceTable.colb,
targetTable.col3 = sourceTable.colc,
targetTable.col4 = sourceTable.cold
Traaa! Det fungerer bra!
Med ovennevnte forståelse kan du endre de angitte feltene og kriteriene for å gjøre arbeidet ditt. Du kan også utføre kontrollene, deretter trekke dataene inn i temp-tabellen (e) og deretter kjøre oppdateringen ved hjelp av syntaksen ovenfor og erstatte tabell- og kolonnenavnene dine.
Håper det fungerer, hvis ikke, gi meg beskjed. Jeg vil skrive en nøyaktig spørring for deg.