我正在尝试选择另一个表中是否存在条目。这是一个简单的例子:
两张桌子:
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
有更简单的方法吗?
答案 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