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

Hvordan kan jeg lave en FULD OUTER JOIN i MySQL?

Du har ikke fulde tilmeldinger i MySQL, men du kan sikkert emulere dem a> .

For et kodeeksempel transskriberet fra dette Stack-Overflow-spørgsmål du har:

Med to 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

Forespørgslen ovenfor fungerer i særlige tilfælde, hvor en fuld ydre joinforbindelse operation ville ikke producere nogen duplikerede rækker. Forespørgslen ovenfor afhænger af UNION sæt operatoren til at fjerne duplikerede rækker introduceret af forespørgselsmønsteret. Vi kan undgå at indføre duplikerede rækker ved at bruge en anti-join mønster for den anden forespørgsel, og brug derefter en UNION ALL-sætoperator til at kombinere de to sæt. I det mere generelle tilfælde, hvor en fuld ydre sammenføjning ville returnere duplikerede rækker, kan vi gøre dette:

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. CTE Recursion for at få træhierarki

  2. Sådan fungerer LOG2() i MariaDB

  3. Hvordan @@MAX_CONNECTIONS virker i SQL Server

  4. konvertering af Epoch-tidsstempel til sql-server (læsbart format for mennesker)