正如标题所说,实际上可以做到这一点吗? 所以首先我有 的学生
+------------+------- +---------+
| id_student | score_a|score_b |
+------------+--------+---------+
| 1 | 70 |80 |
+------------+--------+---------+
| 2 | 70 |90 |
+------------+--------+---------+
| 3 | 80 |70 |
+------------+--------+---------+
| 4 | 80 |70 |
+------------+--------+---------+
| 5 | 80 |90 |
+------------+--------+---------+
| 6 | 60 |70 |
+------------+--------+---------+
| 7 | 60 |80 |
+------------+--------+---------+
| 8 |40 |70 |
+------------+--------+---------+
然后类
+----------+--------------+
| id_class | limit_people |
+----------+--------------+
| 1 | 1 |
+----------+--------------+
| 2 | 2 |
+----------+--------------+
| 3 | 2 |
+----------+--------------+
并注册表
注册
+-------------+-------------+----------+
| id_register | id_students | id_class |
+-------------+-------------+----------+
| 1 | 1 | 1 |
+-------------+-------------+----------+
| 2 | 1 | 2 |
+-------------+-------------+----------+
| 3 | 2 | 2 |
+-------------+-------------+----------+
| 4 | 2 | 3 |
+-------------+-------------+----------+
| 5 | 3 | 1 |
+-------------+-------------+----------+
| 6 | 3 | 3 |
+-------------+-------------+----------+
| 7 | 4 | 3 |
+-------------+-------------+----------+
| 8 | 4 | 2 |
+-------------+-------------+----------+
有没有办法让我们说其中一个类基于class.limit_people
字段达到最大限制,不能再包含那些包含那些id_class的记录而不是它们将与其他id_class一起显示他们也有,因为1名学生可以有2个id_class?
例如:class.limit_people = 1
为id_class = 1
,在结果表中有2条使用id_class = 1的记录,不能只显示一次(在{{1上得分较高的学生) }}?
当前查询:
total
通过运行这些查询,导致我有
SELECT
register.id_register,
register.id_students,
(student.score_a + student.score_b)*50/100 AS total,
register.id_class
FROM
`register`
LEFT JOIN
`student`
ON (register.id_students = student.id_student)
GROUP BY register.id_students
ORDER BY total DESC
正如您所看到+-------------+-------------+-------+----------+
| id_register | id_students | total | id_class |
+-------------+-------------+-------+----------+
| 3 | 2 | 80 | 2 |
+-------------+-------------+-------+----------+
| 1 | 1 | 75 | 1 |
+-------------+-------------+-------+----------+
| 5 | 3 | 75 | 1 |
+-------------+-------------+-------+----------+
| 7 | 4 | 75 | 3 |
+-------------+-------------+-------+----------+
id_students = 3
而id_class=1
显示在桌面上(最大行= 1基于class.limit_people
),我想要的结果显示{{1} }}
id_class=3
答案 0 :(得分:0)
SELECT * FROM students WHERE score >=100 AND ROWNUM <= 3;
这只是为了回答那个在显示三行时得分最高的问题。
0xb7BA52343f45927B9CEAeaaB16228CA6Eb9FE5a4