Mysql 检索满足条件但不满足另一条件的记录
我有一个名为Mysql 检索满足条件但不满足另一条件的记录,mysql,sql,Mysql,Sql,我有一个名为tutory 我想检索所有学习111和不学习333 这就是我能想到的: 输出: stud_id ------- 1 4 三个备选方案: 使用具有子句和其中子句: SELECT * FROM tution WHERE subject_id = 111 OR subject_id=333 GROUP BY stud_id HAVING COUNT(DISTINCT subject_id)=1 AND subject_id<>333 SELECT * FR
tutory
我想检索所有学习
111
和不学习333
这就是我能想到的: 输出:
stud_id
-------
1
4
三个备选方案:
具有
子句和其中
子句:
SELECT *
FROM tution
WHERE subject_id = 111 OR subject_id=333
GROUP BY stud_id
HAVING COUNT(DISTINCT subject_id)=1 AND subject_id<>333
SELECT *
FROM tution
GROUP BY stud_id
HAVING COUNT(DISTINCT subject_id)=2 AND subject_id =111 AND subject_id<>333
导致:
SELECT *
FROM tution
WHERE subject_id=111
AND stud_id NOT IN (SELECT stud_id FROM tution WHERE subject_id= 333)
导致
STUD_ID SUBJECT_ID
1 111
4 111
三个备选方案:
具有
子句和其中
子句:
SELECT *
FROM tution
WHERE subject_id = 111 OR subject_id=333
GROUP BY stud_id
HAVING COUNT(DISTINCT subject_id)=1 AND subject_id<>333
SELECT *
FROM tution
GROUP BY stud_id
HAVING COUNT(DISTINCT subject_id)=2 AND subject_id =111 AND subject_id<>333
导致:
SELECT *
FROM tution
WHERE subject_id=111
AND stud_id NOT IN (SELECT stud_id FROM tution WHERE subject_id= 333)
导致
STUD_ID SUBJECT_ID
1 111
4 111
三个备选方案:
具有
子句和其中
子句:
SELECT *
FROM tution
WHERE subject_id = 111 OR subject_id=333
GROUP BY stud_id
HAVING COUNT(DISTINCT subject_id)=1 AND subject_id<>333
SELECT *
FROM tution
GROUP BY stud_id
HAVING COUNT(DISTINCT subject_id)=2 AND subject_id =111 AND subject_id<>333
导致:
SELECT *
FROM tution
WHERE subject_id=111
AND stud_id NOT IN (SELECT stud_id FROM tution WHERE subject_id= 333)
导致
STUD_ID SUBJECT_ID
1 111
4 111
三个备选方案:
具有
子句和其中
子句:
SELECT *
FROM tution
WHERE subject_id = 111 OR subject_id=333
GROUP BY stud_id
HAVING COUNT(DISTINCT subject_id)=1 AND subject_id<>333
SELECT *
FROM tution
GROUP BY stud_id
HAVING COUNT(DISTINCT subject_id)=2 AND subject_id =111 AND subject_id<>333
导致:
SELECT *
FROM tution
WHERE subject_id=111
AND stud_id NOT IN (SELECT stud_id FROM tution WHERE subject_id= 333)
导致
STUD_ID SUBJECT_ID
1 111
4 111
试试这个:
SELECT t1.stud_id FROM tuition t1
WHERE t1.subject_id=111
AND NOT EXISTS(SELECT 1 FROM tuition t2
WHERE t1.stud_id=t2.stud_id
AND t2.subject_id = 333)
试试这个:
SELECT t1.stud_id FROM tuition t1
WHERE t1.subject_id=111
AND NOT EXISTS(SELECT 1 FROM tuition t2
WHERE t1.stud_id=t2.stud_id
AND t2.subject_id = 333)
试试这个:
SELECT t1.stud_id FROM tuition t1
WHERE t1.subject_id=111
AND NOT EXISTS(SELECT 1 FROM tuition t2
WHERE t1.stud_id=t2.stud_id
AND t2.subject_id = 333)
试试这个:
SELECT t1.stud_id FROM tuition t1
WHERE t1.subject_id=111
AND NOT EXISTS(SELECT 1 FROM tuition t2
WHERE t1.stud_id=t2.stud_id
AND t2.subject_id = 333)
下面显示满足给定条件的所有不同学生
SELECT Distinct stud_id
FROM tution
WHERE subject_id=111
AND
stud_id NOT IN (SELECT stud_id FROM tution WHERE subject_id= 333)
下面显示满足给定条件的所有不同学生
SELECT Distinct stud_id
FROM tution
WHERE subject_id=111
AND
stud_id NOT IN (SELECT stud_id FROM tution WHERE subject_id= 333)
下面显示满足给定条件的所有不同学生
SELECT Distinct stud_id
FROM tution
WHERE subject_id=111
AND
stud_id NOT IN (SELECT stud_id FROM tution WHERE subject_id= 333)
下面显示满足给定条件的所有不同学生
SELECT Distinct stud_id
FROM tution
WHERE subject_id=111
AND
stud_id NOT IN (SELECT stud_id FROM tution WHERE subject_id= 333)
1。这是不正确的。您的小提琴已插入图腾值(2111)代码>这不是OP数据的一部分。如果删除该行,则也将删除该行螺柱\u id 2returned@FuzzyTree:修好了!!1.这是不正确的。您的小提琴已插入图腾值(2111)代码>这不是OP数据的一部分。如果删除该行,则也将删除该行螺柱\u id 2returned@FuzzyTree:修好了!!1.这是不正确的。您的小提琴已插入图腾值(2111)代码>这不是OP数据的一部分。如果删除该行,则也将删除该行螺柱\u id 2returned@FuzzyTree:修好了!!1.这是不正确的。您的小提琴已插入图腾值(2111)代码>这不是OP数据的一部分。如果删除该行,则也将删除该行螺柱\u id 2returned@FuzzyTree:修好了!!请您简单解释一下您的答案。@MohitJain获取的
stud\u id
没有subject\u id=333
,因此在这种情况下我得到1和4。然后再添加一个id为subject\u id=111
的筛选器,在本例中结果为1,4。请您简单解释一下您的答案。@MohitJain获取stud\u id
,它没有subject\u id=333
,因此在本例中我得到1和4。然后再添加一个id为subject\u id=111
的筛选器,在本例中结果为1,4。请您简单解释一下您的答案。@MohitJain获取stud\u id
,它没有subject\u id=333
,因此在本例中我得到1和4。然后再添加一个id为subject\u id=111
的筛选器,在本例中结果为1,4。请您简单解释一下您的答案。@MohitJain获取stud\u id
,它没有subject\u id=333
,因此在本例中我得到1和4。然后再添加一个id为subject\u id=111
的过滤器,在本例中,结果为1,4。