Dapatkan semula baris MySql dengan nilai lajur yang sama
P粉464088437
P粉464088437 2023-11-10 21:53:39
0
2
846

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粉464088437
P粉464088437

membalas semua(2)
P粉237029457
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粉933003350

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) (jumlah(id = 2)) mengira berapa banyak "2" yang terdapat dalam setiap pecahan. Yang kedua ialah nombor "4". Hanya markah "2" dan "4" dikembalikan.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan