2017-01-16 7 views
1

エントリが別のテーブルに存在するかどうかを選択しようとしています。ここでは簡単な例です:SQL:別のテーブルにエントリの存在を選択する

2つのテーブル:

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(キー=学生ID) のリストを持っている第二の表では、学生のリストを持っている - >教師(キー=学生ID、教師IDの組み合わせ)。

私はすべての生徒(1,2,3,4;各行に1つ)とその先生がいるかどうかのフラグを選択したいと思います。

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

私は、これは、グループを使用して行うことが可能です知っている:

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

は簡単な方法はありますか?

答えて

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 
+0

OP、これは私にはそれほど簡単なようです。また、派生テーブルを使用するため、これは少し遅くなると思います。 – Kontsnor

+0

@Kontsnorそれは確かに簡単ではありません。 OPは、実際のデータが使用されたときの照会との比較をOPに知らせることができます。 –

+0

素晴らしいソリューションです。今すぐテストしてください。 – Rimoun

関連する問題