SQL:在另一个表中选择条目的存在

时间:2017-01-16 21:09:23

标签: mysql sql join

我正在尝试选择另一个表中是否存在条目。这是一个简单的例子:

两张桌子:

Student
ID   Major
1    CS
2    CS
3    CS
4    CS

Student_Teacher 
SID  TID 
1    A 
1    B 
1    C 
3    B 
3    D

第一个表有一个学生ID列表(key =学生ID) 第二个表有一个学生列表 - >老师(关键=学生证,教师ID组合)。

我想选择所有学生(1,2,3,4;每行一个)以及是否有老师的标志。

SELECTED:
ID   Flag
1    1
2    0
3    1
4    0

我知道可以使用group by:

select Student.ID, count(Student_Teacher.TID)
from Student left join Student_Teacher 
group by Student.ID

有更简单的方法吗?

1 个答案:

答案 0 :(得分:1)

您可以尝试加入包含第二个表的不同学生ID值的派生表:

SELECT ID, IF(ST.SID IS NOT NULL, 1, 0) AS FLAG
FROM Student AS S
LEFT JOIN (
   SELECT DISTINCT SID
   FROM Student_Teacher
) AS ST ON S.ID = ST.SID