Setelah membaca banyak topik dengan cermat tentang membandingkan tabel dan menggunakan fungsi minus, saya memposting ini.

Saya menjalankan perbandingan antara dua tabel.

Select Column1,Column2.. from table 1
minus Column1,Column2.. from table 2
union all
Column1,Column2.. from table 2
Select Column1,Column2.. from table 1
order by column1

Sekarang ini memberi saya daftar nilai duplikat atau tunggal yang berbeda di setiap tabel. Ini baik-baik saja. Namun saya tidak memiliki indikator yang memberi tahu saya di tabel mana baris (salah) berada. Saya mencoba menambahkan kolom sementara dengan memberinya bidang A dan B. Ini menghasilkan ekspor penuh tabel karena ini jelas diambil dengan fungsi minus.

Apakah ada cara agar saya dapat menandai baris yang memberi tahu saya di tabel mana mereka berada tanpa menambahkan kolom permanen di tabel, karena ini bukan opsi.

Bantuan sangat dihargai!

sql
3
gandalf 22 Desember 2016, 11:26

1 menjawab

Jawaban Terbaik

Contoh kueri yang Anda berikan tidak benar secara sintaksis dan memiliki kesalahan saat dijalankan. Tapi, berdasarkan deskripsi dari apa yang Anda coba, saya pikir saya mengerti apa yang Anda coba capai.

Anda berada di jalur yang benar dengan menambahkan kolom sementara yang memberikan indikator tabel mana yang merupakan sumber baris. Nilai kolom sementara harus sama untuk kueri sebelum UNION ALL dan nilai yang berbeda untuk kueri sesudahnya.

Berikut adalah versi terbaru dari contoh kueri Anda. Anda dapat mencobanya di SqlFiddle

(
  SELECT 'FromTable1', COLUMN1, COLUMN2, COLUMN3 FROM TABLE1
  EXCEPT
  SELECT 'FromTable1', COLUMN1, COLUMN2, COLUMN3 FROM TABLE2
)
UNION ALL
(
  SELECT 'FromTable2', COLUMN1, COLUMN2, COLUMN3 FROM TABLE2
  EXCEPT
  SELECT 'FromTable2', COLUMN1, COLUMN2, COLUMN3 FROM TABLE1
)
1
Adam Porad 22 Desember 2016, 08:52