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

Effektiv måde at simulere fuld ydre joinforbindelse i MySQL?

Du kan bruge en LEFT JOIN og en RIGHT JOIN:

SELECT * FROM tableA LEFT JOIN tableB ON tableA.b_id = tableB.id
UNION ALL
SELECT * FROM tableA RIGHT JOIN tableB ON tableA.b_id = tableB.id
WHERE tableA.b_id IS NULL

Der er også nogle oplysninger på Wikipedia om dette emne:Fuld ydre deltagelse .

Wikipedia-artiklen foreslår at bruge en UNION i MySQL. Dette er lidt langsommere end UNION ALL, men endnu vigtigere vil det ikke altid give det korrekte resultat - det vil fjerne duplikerede rækker fra outputtet. Så foretrækker at bruge UNION ALL i stedet for UNION her.




  1. Opdater alle rækker i en kolonne til ny værdi

  2. Sådan overføres alle MySQL-databaser fra gammel til ny server

  3. Erstat NOT IN med LEFT JOIN i SQL-sætning

  4. MySQL Multiple Where-klausul