Rumah > Soal Jawab > teks badan
Mari kita pertimbangkan jadual berikut-
ID Score 1 95 2 100 3 88 4 100 5 73
Saya seorang SQL noob yang lengkap, tetapi bagaimana cara saya mengembalikan skor yang mengandungi ID 2 dan 4? Jadi ia sepatutnya mengembalikan 100 kerana ia muncul dalam kedua-dua ID 2 dan 4
P粉2370294572023-11-11 20:57:58
SELECT score FROM t WHERE id in (2, 4) HAVING COUNT(*) = 2 /* replace this with the number of IDs */
Ini akan memilih baris dengan ID 2 dan 4. Kemudian, klausa HAVING
memastikan bahawa kita menemui kedua-dua baris; jika salah satu daripadanya hilang, kiraan akan menjadi kurang daripada 2.
Ini mengandaikan id
adalah satu-satunya lajur.
P粉9330033502023-11-11 10:43:35
Ini ialah contoh pertanyaan "set dalam set". Saya mengesyorkan menggunakan klausa having
untuk pengagregatan kerana ia adalah kaedah yang paling fleksibel.
select score from t group by score having sum(id = 2) > 0 and -- has id = 2 sum(id = 4) > 0 -- has id = 4
Apa yang dilakukan ini ialah agregat mengikut skor. Kemudian bahagian pertama klausa having
子句的第一部分 (sum(id = 2)
(