Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Połącz dwie tabele, wyklucz te same rekordy

Wygląda na to, że potrzebujesz FULL OUTER JOIN i wykluczyć część wspólną. Możesz to zasymulować za pomocą:

SELECT T1.col_name
FROM T1 
LEFT JOIN T2
  ON T1.col_name = T2.col_name
WHERE T2.col_name IS NULL
UNION
SELECT T2.col_name
FROM T2 
LEFT JOIN T1
  ON T1.col_name = T2.col_name
WHERE T1.col_name IS NULL;

SqlFiddleDemo

╔══════════╗
║ col_name ║
╠══════════╣
║ C        ║
║ D        ║
║ E        ║
║ F        ║
║ G        ║
╚══════════╝

Więcej informacji:Wizualna reprezentacja złączeń SQL

SELECT <select_list>
FROM Table_A A
FULL OUTER JOIN Table_B B
ON A.Key = B.Key
WHERE A.Key IS NULL OR B.Key IS NULL

Niestety MySQL nie obsługuje FULL OUTER JOIN więc użyłem unii 2 LEFT JOIN .

Uzupełnienie

Możesz go łatwo rozszerzyć o dodatkowe kolumny.

SELECT 'T1' AS tab_name, T1.col_name, T1.col1, NULL AS col2
FROM  T1
LEFT JOIN  T2
  ON T1.col_name=  T2.col_name
WHERE T2.col_name IS NULL
UNION
SELECT 'T2' AS tab_name, T2.col_name, NULL, T2.col2
FROM  T2
LEFT JOIN  T1
  ON T1.col_name=  T2.col_name
WHERE T1.col_name IS NULL;

LiveDemo

Wyjście:

╔══════════╦══════════╦══════╦═════════════════════╗
║ tab_name ║ col_name ║ col1 ║        col2         ║
╠══════════╬══════════╬══════╬═════════════════════╣
║ T1       ║ C        ║    3 ║                     ║
║ T1       ║ D        ║    4 ║                     ║
║ T2       ║ E        ║      ║ 2016-01-03 00:00:00 ║
║ T2       ║ F        ║      ║ 2016-01-02 00:00:00 ║
║ T2       ║ G        ║      ║ 2016-01-01 00:00:00 ║
╚══════════╩══════════╩══════╩═════════════════════╝


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Uzyskaj niedzielną datę między dwiema datami a ostatnim dniem z jednego miesiąca mysql

  2. ER_NOT_SUPPORTED_AUTH_MODE — serwer MySQL

  3. mysql_num_rows() oczekuje, że parametr 1 będzie zasobem, podana wartość logiczna w

  4. Jak pobrać wiele wierszy z procedury składowanej w MySQL?

  5. Pętla skryptu Bash przez MySQL