Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Semak sama ada Lajur MySQL Mengandungi Semua Nilai dari Lajur Lain?

Bagaimana untuk Semak sama ada Lajur MySQL Mengandungi Semua Nilai dari Lajur Lain?

Susan Sarandon
Lepaskan: 2024-12-29 22:16:37
asal
338 orang telah melayarinya

How to Check if a MySQL Column Contains All Values from Another Column?

Semak sama ada Lajur Mengandungi SEMUA Nilai Lajur Lain dalam Pangkalan Data MySQL

Pertimbangkan dua jadual, T1 dan T2, dengan yang berikut struktur:

T1:

personID stuffID
1 1
1 2
1 3
1 4
2 1
2 4
3 1
3 2

T2:

stuffID
1
2
3

Matlamatnya adalah untuk mendapatkan semua nilai personID daripada T1 yang dikaitkan dengan setiap nilai stuffID dalam T2. Untuk contoh ini, hasilnya ialah 1 kerana hanya personID 1 yang mempunyai rekod untuk ketiga-tiga stuffID yang terdapat dalam T2.

Penyelesaian:

Untuk mencapai ini, kita boleh menggunakan proses dua langkah:

Langkah 1: Kenal pasti padanan rekod

SELECT personID
FROM T1
WHERE stuffID IN (SELECT stuffID FROM T2)
Salin selepas log masuk

Subkueri ini mendapatkan semula semua nilai personID daripada T1 yang mempunyai sekurang-kurangnya satu stuffID yang sepadan dalam T2.

Langkah 2: Semak kesempurnaan

GROUP BY personID
HAVING COUNT(DISTINCT stuffID) = (SELECT COUNT(stuffID) FROM T2)
Salin selepas log masuk

Bahagian ini mengumpulkan hasil daripada Langkah 1 mengikut personID dan menyemak sama ada kiraan berbeza nilai stuffID untuk setiap kumpulan adalah sama dengan bilangan nilai stuffID dalam T2. Jika ya, ini menunjukkan bahawa personID dikaitkan dengan semua nilai stuffID daripada T2.

Pertanyaan Akhir:

Menggabungkan kedua-dua langkah, pertanyaan terakhir untuk menyemak sama ada lajur mengandungi semua nilai lajur lain dalam MySQL ialah:

SELECT personID
FROM T1
WHERE stuffID IN (SELECT stuffID FROM T2)
GROUP BY personID
HAVING COUNT(DISTINCT stuffID) = (SELECT COUNT(stuffID) FROM T2)
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Semak sama ada Lajur MySQL Mengandungi Semua Nilai dari Lajur Lain?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan