gpt4 book ai didi

mysql - 从表中最多选择 2 条记录

转载 作者:行者123 更新时间:2023-11-29 12:42:42 26 4
gpt4 key购买 nike

我在项目表中有这样的数据

Tabel siswa                          Tabel jurusan             Tabel Penjurusan
id_siswa nama nilai tes id_jurusan id_jurusan nama id id_siswa id_jurusan option ket
1 A 6 01 01 Sipil 1 1 01 1 lULUS
2 B 7 02 02 Mesin 2 1 02 2 TIDAK LULUS
3 C 8 01 03 Sastra 3 1 03 3 TIDAK LULUS
4 D 6 03 4 2 01 1 LULUS
5 E 7 02 5 2 02 2 TIDAK LULUS


6 2 03 3 TIDAK LULUS

我有这样的查询

SELECT nama_jurusan, nama_lengkap AS NAMA, nilai_tes FROM siswa, penjurusan, jurusan
WHERE siswa.kode = penjurusan.kode AND jurusan.id_jurusan = penjurusan.id_jurusan AND penjurusan.keterangan = "LULUS"
GROUP BY nama_jurusan
ORDER BY nilai_tes ASC

结果一定是

nama nama_jurusan nilai_tes

B西 PIL 7

西 PIL 6

但是我的查询不能选择最多 2 条记录,只能选择最多 1 条记录。

你能帮我解决这个问题吗?

谢谢。

最佳答案

听起来您不想使用GROUP BY,而是使用LIMIT:

SELECT nama_jurusan, nama_lengkap AS NAMA, nilai_tes 
FROM siswa s
INNER JOIN penjurusan p ON s.kode = p.kode
INNER JOIN jurusan j ON j.id_jurusan = p.id_jurusan
WHERE p.keterangan = 'LULUS'
ORDER BY nilai_tes ASC
LIMIT 2

根据您想要的结果,您可能需要使用 DESC 而不是 ASC。另外,请注意 INNER JOIN 语法的使用。

<小时/>

根据您的意见,您希望每组有两条记录。您可以使用 IF 创建自己的 row_number,然后使用它获取每组的前两个。

SELECT *
FROM (
SELECT nama_jurusan,
nama_lengkap AS NAMA,
nilai_tes,
@rn:=IF(@prevjurusan=nama_jurusan,@rn+1,1) as rn,
@prevjurusan:=nama_jurusuan
FROM siswa s
INNER JOIN penjurusan p ON s.kode = p.kode
INNER JOIN jurusan j ON j.id_jurusan = p.id_jurusan
CROSS JOIN (select @rn:= 0, @prevjurusan:='') t
WHERE p.keterangan = 'LULUS'
ORDER BY nama_jurusan, nilai_tes
) y
WHERE rn <= 2

关于mysql - 从表中最多选择 2 条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25903159/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com