sql >> Database teknologi >  >> RDS >> Mysql

Indsæt manglende poster fra en tabel til en anden ved hjælp af mysql

Det er også muligt at bruge LEFT OUTER JOIN for det. Dette vil undgå overhead for underforespørgsler (når systemet muligvis udfører underforespørgsel én gang for hver registrering af ydre forespørgsel) som i John Woos svar, og vil undgå at udføre unødvendigt arbejde ved at overskrive allerede eksisterende 800 poster som i user2340435s ene:

INSERT INTO b
SELECT a.* FROM a
LEFT OUTER JOIN b ON b.id = a.id
WHERE b.id IS NULL;

Dette vil først vælge alle rækker fra A og B tabeller inklusive alle kolonner fra begge tabeller, men for rækker som findes i A og eksisterer ikke i B alle kolonner for B tabel vil være NULL .Så filtrerer den kun sådanne sidstnævnte rækker (WHERE b.id IS NULL ), og til sidst indsætter den alle disse rækker i B tabel.



  1. Vælg forespørgsel i to tabeller i MySQL

  2. postgresql duplikatnøgle overtræder unik begrænsning

  3. Hvordan udtrækkes to på hinanden følgende cifre fra et tekstfelt i MySQL?

  4. Hvordan udfører jeg en indsættelse og returnerer indsat identitet med Dapper?