在WHERE子句中使用AND和OR进行MySQL查询

时间:2015-03-31 08:21:43

标签: mysql

我正在创建学生记录搜索查询。学校有三个俱乐部(数学,英语和科学)。我想做的是选择他们加入此俱乐部的学生。 在学生 - 仅限数学 - 仅限数学和英语 - 仅限数学和科学 - 仅限英语 - 仅限英语和科学 - 仅限科学

Student table (studentTB)

id | student_name | date_join
-----------------------------
 1 | Daniel Addo  | 2012-01-05
 2 |David Polles  | 2013-05-11
 3 | Grace Amorno | ---------
 4 | Zein Akill   | ---------

Club table (studentCLUB)

id | studentID | club
----------------------
1  | 1         | maths
2  | 1         | science
3  | 2         | science
4  | 2         | english
5  | 3         | science
6  | 4         | maths
7  | 4         | science
8  | 4         | english


SELECT *
    FROM studentTB
    INNER JOIN studentCLUB
    ON studentTB.id = studentCLUB.studentID
    WHERE (club = 'maths') OR (club = 'science') OR (day = 'english')
    GROUP BY studentTB.id

这就是我到目前为止所选择的学生,当他们属于俱乐部时。但是当我将OR更改为AND时,它会给我null。 如果有人能帮助我,我会很高兴的。谢谢

2 个答案:

答案 0 :(得分:0)

因此,您需要找到属于您可以执行的所有指定俱乐部的学生,如下所示。它会检查拥有所有3个俱乐部的学生。

SELECT *
FROM studentTB
INNER JOIN studentCLUB
ON studentTB.id = studentCLUB.studentID
WHERE
club in ('maths','science','english') 
GROUP BY studentTB.id
having count(*) = 3 

答案 1 :(得分:0)

SELECT * FROM studentTB
WHERE EXISTS(SELECT * FROM studentCLUB
WHERE studentTB.id = studentCLUB.studentID)