以下是我在每个表格中的值
阅读 - 表名
student_id - 学生证
1
4
5
7
6
9
11
说 - 表
9
10
12
13
14
15
写作 - 表
1
2
3
4
5
6
7
9
听力 - 表
1
2
3
4
5
6
7
8
9
我的查询将返回4个表中常见的student_id。例如 我的查询将返回此示例是
只有9'id对于所有表都是通用的,因此查询将计数返回为1。 我尝试使用内部联接和一些不同的查询方式,但结果我得到了错误的答案。请任何人帮助我摆脱这个问题。谢谢提前。
答案 0 :(得分:2)
使用INTERSECT
select count(1)
from
(
select student_id from Reading
INTERSECT
select student_id from speaking
INTERSECT
..
) a
如果student_id
在任何这些表格中重复,如果您不想计算重复项,那么
select count(Distinct student_id)
from
(
select student_id from Reading
INTERSECT
select student_id from speaking
INTERSECT
..
) a
答案 1 :(得分:1)
SELECT t1.id FROM table1 t1
INNER JOIN table2 AS t2 ON t1.id = t2.id
INNER JOIN table3 AS t3 ON t1.id = t3.id
INNER JOIN table4 AS t4 ON t1.id = t4.id
这将返回所有4个表中常见的id。
答案 2 :(得分:1)
选择计数(不同的a.student_id)
来自reading_table a
加入speak_table b 在a.student_id = b.student_id
加入writing_table c 在b.student_id = c.student_id
加入listening_table d 在c.student_id = d.student_id
答案 3 :(得分:0)
INNER JOIN
的简单COUNT DISTINCT
可以:
SELECT COUNT(DISTINCT studentID)
FROM Student AS st
INNER JOIN Speaking AS s ON st.studentID = s.studentID
INNER JOIN Writing AS w ON s.studentID = w.studentID
INNER JOIN Listening AS l ON w.studentID = l.studentID