sql >> Databasteknik >  >> RDS >> Mysql

Hur kan jag göra en FULLSTÄNDIG OUTER JOIN i MySQL?

Du har inte fullständiga anslutningar i MySQL, men du kan säkert emulera dem a> .

För ett kodprov transkriberad från denna Stack Overflow-fråga du har:

Med två tabeller t1, t2:

SELECT * FROM t1
LEFT JOIN t2 ON t1.id = t2.id
UNION
SELECT * FROM t1
RIGHT JOIN t2 ON t1.id = t2.id

Frågan ovan fungerar för speciella fall där en full yttre koppling operation skulle inte producera några dubbletter av rader. Frågan ovan beror på UNION ställ in operatorn för att ta bort dubbletter av rader som introducerats av frågemönstret. Vi kan undvika att införa dubbletter av rader genom att använda en anti-join mönstret för den andra frågan och använd sedan en UNION ALL-uppsättningsoperator för att kombinera de två uppsättningarna. I det mer allmänna fallet, där en fullständig yttre sammanfogning skulle returnera dubbla rader, kan vi göra så här:

SELECT * FROM t1
LEFT JOIN t2 ON t1.id = t2.id
UNION ALL
SELECT * FROM t1
RIGHT JOIN t2 ON t1.id = t2.id
WHERE t1.id IS NULL


  1. Användningsfall för MariaDB och Docker, del 1

  2. Sammanfoga olika datakällor i skiktning

  3. Hur man uppgraderar MySQL på CentOS

  4. Aggregera rader i Oracle SQL-sats