sql >> Databáze >  >> RDS >> Mysql

Jak mohu provést FULL OUTER JOIN v MySQL?

Nemáte úplná připojení v MySQL, ale můžete je napodobit .

Pro ukázku kódu přepsáno z této otázky Stack Overflow máte:

Se dvěma tabulkami 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

Výše uvedený dotaz funguje pro speciální případy, kdy úplné vnější spojení operace by nevytvořila žádné duplicitní řádky. Výše uvedený dotaz závisí na UNION set operátor k odstranění duplicitních řádků zavedených vzorem dotazu. Použitím anti-join se můžeme vyhnout zavádění duplicitních řádků vzor pro druhý dotaz a poté pomocí operátoru UNION ALL tyto dvě sady zkombinujte. V obecnějším případě, kdy by úplné vnější spojení vrátilo duplicitní řádky, můžeme udělat toto:

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. Získávání dat pomocí znakové sady UTF-8 ze serveru MSSQL pomocí rozšíření PHP FreeTDS

  2. Jak vygenerovat náhodné celé číslo v rozsahu v MariaDB

  3. Přístup odepřen uživateli „[email protected]“ (s použitím hesla:NE)

  4. Jak přidat logo do záhlaví sestavy v aplikaci Access