2016-03-29 11 views
0

私は以下の構造の学生テーブルを持っています。複数の行にタグ付けされたIdを検索するSqlクエリ

StudentId StudentName  SubjectId 
    123   Lina    1 
    456   Andrews   4 
    123   Lina    3 
    123   Lina    4 
    456   Andrews   5 

subjectidが1,3に等しく、studentidがstudentIdが123

あるべき出力

Select studentId from student where subject Id='1' and SubjectId ='3' and  
subjectId ='4' . 

4に等しくない場合studentIdを取得するクエリを記述する必要があるが、それうまくいきません。すべてのヘルプは

答えて

2

をグループ化して試してみてくださいすることになります。

Select studentId 
from student 
where subject_Id in ('1', '3', '4') 
group by studentId 
having count(distinct subject_Id) = 3 

注:subject_Idフィールドがタイプintである場合は、(1, 3, 4)('1', '3', '4')を変更することを検討することがあります。

注2:count内部distinctキーワードはstudentIdあたりsubject_Id値を重複していた場合に使用すべきです。

+0

あなたの返事に感謝します。条件4を満たさないsubjectidを追加する必要がある場合。クエリの変更方法 – sam

2

を高く評価している最も簡単な方法は、

select StudentId from student 
where SubjectId in (1,3,4) 
group by StudentId 
having count(distinct SubjectId) = 3 
+0

あなたの返事をお寄せいただきありがとうございます。私が条件4を満たさないsubjectidを追加する必要がある場合。クエリを変更する方法 – sam

0

選択studentId

クエリを使用しなければならないことのためにあなたは、唯一の1主題IDを使用することができ、一度にまたはその代わりと し、同様に、単一のコースを使用していない対象ID = 1またはSubjectId =学生から3または
subjectId = 4。

これを一度お試しください。

関連する問題