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。