Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Gabungkan dua tabel, kecualikan catatan yang sama

Sepertinya Anda perlu FULL OUTER JOIN dan mengecualikan bagian umum. Anda dapat mensimulasikannya dengan:

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        ║
╚══════════╝

Info lebih lanjut:Representasi Visual dari SQL Joins

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

Sayangnya MySQL tidak mendukung FULL OUTER JOIN jadi saya menggunakan gabungan 2 LEFT JOIN .

tambahan

Anda dapat dengan mudah memperluasnya dengan kolom tambahan.

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

Keluaran:

╔══════════╦══════════╦══════╦═════════════════════╗
║ 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. mengeksekusi file .sql di baris perintah

  2. Masalah efisiensi/struktur database

  3. MySQL cara mendapatkan jumlah tanggal mulai/akhir dengan kemungkinan tanggal yang tumpang tindih

  4. TIMESTAMP artinya?

  5. Integer overflow apa yang akan terjadi selanjutnya