我有两张桌子.First Table是一个batch在"批处理"字段中包含逗号分隔的学生ID 的表
batch
--------------
id batch
--------------
1 1,2
2 3,4
Run Code Online (Sandbox Code Playgroud)
第二个表是标记
marks
----------------------
id studentid subject marks
1 1 English 50
2 2 English 40
3 3 English 70
4 1 Math 65
5 4 English 66
6 5 English 75
7 2 Math 55
Run Code Online (Sandbox Code Playgroud)
我们如何找到第一批id = 1的学生,他们使用英语得分超过45分而不使用子查询.
我发现使用单个查询完成此问题的问题是我们不能在JOIN语句中使用IN作为关联运算符
以下查询需要进行哪些更改才能使其正常工作?
SELECT * FROM batch
INNER JOIN marks ON marks.studentid IN(batch.batch) where batch.id = 1
Run Code Online (Sandbox Code Playgroud)
SELECT m.studentId
FROM batch b
JOIN marks m
ON FIND_IN_SET(m.studentId, b.batch)
AND m.subject = 'English'
GROUP BY
m.studentId
HAVING SUM(marks) > 45
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5178 次 |
| 最近记录: |