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

Menghapus duplikat dari hasil gabungan beberapa tabel dengan kolom berbeda di MySQL

Saya tidak tahu apakah saya memahami masalah Anda, tetapi mengapa Anda menggunakan LEFT JOIN? Ceritanya terdengar lebih seperti INNER JOIN. Tidak ada yang membutuhkan UNION.

[Sunting] Oke, saya rasa saya mengerti apa yang Anda inginkan sekarang. Saya belum pernah mencoba apa yang akan saya sarankan, dan terlebih lagi, beberapa DB tidak mendukungnya (belum), tetapi saya pikir Anda menginginkan fungsi windowing.

WITH Y2 AS (SELECT Y.*, ROW_NUMBER() OVER (PARTITION BY A) AS YROW FROM Y),
     Z2 AS (SELECT Z.*, ROW_NUMBER() OVER (PARTITION BY A) AS ZROW FROM Z)
SELECT COALESCE(Y2.A,Z2.A) AS A, Y2.C, Y2.D, Z2.E, Z2.F, Z2.G
FROM Y2 FULL OUTER JOIN Z2 ON Y2.A=Z2.A AND YROW=ZROW;

Idenya adalah untuk mencetak daftar dalam baris sesedikit mungkin, bukan? Jadi jika A1 memiliki 10 entri di Y dan 7 di Z, maka kita mendapatkan 10 baris dengan 3 memiliki NULL untuk bidang Z. Ini berfungsi di Postgres. Saya tidak percaya sintaks ini tersedia di MySQL.

Y:

 a | d | c  
---+---+----
 1 | 1 | -1
 1 | 2 | -1
 2 | 0 | -1

Z:

 a | f | g | e 
---+---+---+---
 1 | 9 | 9 | 0
 2 | 1 | 1 | 0
 3 | 0 | 1 | 0

Output dari pernyataan di atas:

 a | c  | d | e | f | g 
---+----+---+---+---+---
 1 | -1 | 1 | 0 | 9 | 9
 1 | -1 | 2 |   |   |  
 2 | -1 | 0 | 0 | 1 | 1
 3 |    |   | 0 | 0 | 1


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana Kupon WooCommerce disimpan di Database?

  2. Muat informasi secara dinamis ke modal Twitter Bootstrap

  3. Prosedur Tersimpan MySQL vs. kueri kompleks

  4. kueri untuk tata letak horizontal data mysql

  5. Perilaku aritmatika Waktu php/Mysql yang membingungkan