Mysql SQL-如何使用AND运算符查询多个WHERE值

Mysql SQL-如何使用AND运算符查询多个WHERE值,mysql,Mysql,我是SQL新手,一直在寻找答案,但还没有找到。假设我想从名为students的表中查询所有得分为80的学生。我该怎么做呢?到目前为止,我已经试过了,但它看起来像是IN操作符类似于或因为它给我的结果是所有在任何测试中得到80分的人的结果 SELECT * FROM students WHERE test_name IN ('Quiz','Midterm','Final') AND test_scores='80'; 提前感谢您的帮助 样本数据: Test Name | Student ID

我是SQL新手,一直在寻找答案,但还没有找到。假设我想从名为students的表中查询所有得分为80的学生。我该怎么做呢?到目前为止,我已经试过了,但它看起来像是IN操作符类似于或因为它给我的结果是所有在任何测试中得到80分的人的结果

SELECT * FROM students
WHERE test_name IN ('Quiz','Midterm','Final')
AND test_scores='80';
提前感谢您的帮助

样本数据:

 Test Name |  Student ID   |  Student Name  |  Test Score
 Quiz      |   10          |    Tom         |  80
 Midterm   |   50          |    Sally       |  70

我想得到的结果是所有三次考试都得了80分的学生的所有专栏。很抱歉耽搁了,但我想我的电子邮件通知没有正常工作。我警告过你我是新来的。我将尝试推荐的步骤,看看效果如何。我会回来报告。

一种方法是否定考试的意义,然后排除那些学生:

SELECT * 
FROM students
WHERE student_id NOT IN (
    SELECT student_id
    FROM students
    WHERE test_name IN ('Quiz','Midterm','Final')
    AND test_scores != '80';
)
AND test_name IN ('Quiz','Midterm','Final')

您可以将聚合与
having
子句一起使用,假设您希望在所有三个测试中获得80分:

SELECT student_id
FROM students
WHERE test_name IN ('Quiz','Midterm','Final')
GROUP BY student_id
HAVING SUM(test_score = 80 and test_name = 'Quiz') > 0 AND
       SUM(test_score = 80 and test_name = 'Midterm') > 0 AND
       SUM(test_score = 80 and test_name = 'Final') > 0;

您的查询将返回所有在这3项测试中获得80分的学生。你想要什么结果?请从您的表中发布一个小样本行,以及您希望查询从该样本行集中返回的输出。您是否正在寻找在这3项测试中每项都获得80分的学生?这有点复杂,需要一些汇总。展示一些样本数据以及你希望在这个问题和未来问题中得到的结果会有所帮助。使用空格进行对齐,因为制表符的格式设置不好。只需使用样本数据编辑现有问题。感谢您的建议,我将尝试包含一些样本数据,但格式是一个问题。如果您发布的样本数据包含符合标准的学生,这将非常有用。尽管这确实返回了在所有三项测试中都获得80分的学生,它还包括在任何一项测试中获得80分的其他学生。我明天还要继续做下去。再次感谢你让我更进一步!它还将返回那些没有全部参加3次考试的学生,但他们参加的那些考试得了80分。