使用SQL从多个表中获取公共值

时间:2017-06-14 12:32:44

标签: mysql sql

以下是我在每个表格中的值

阅读 - 表名

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。 我尝试使用内部联接和一些不同的查询方式,但结果我得到了错误的答案。请任何人帮助我摆脱这个问题。谢谢提前。

4 个答案:

答案 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