Je hebt geen volledige deelnames in MySQL, maar je kunt er zeker van zijn dat ze emuleert .
Voor een code voorbeeld getranscribeerd van deze Stack Overflow-vraag je hebt:
Met twee tabellen 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
De bovenstaande query werkt voor speciale gevallen waarin een volledige outer join bewerking zou geen dubbele rijen opleveren. De bovenstaande vraag is afhankelijk van de UNION
set-operator om dubbele rijen te verwijderen die zijn geïntroduceerd door het querypatroon. We kunnen voorkomen dat dubbele rijen worden ingevoerd door een anti-join . te gebruiken patroon voor de tweede query en gebruik vervolgens een set-operator UNION ALL om de twee sets te combineren. In het meer algemene geval, waar een volledige outer join dubbele rijen zou opleveren, kunnen we dit doen:
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