mysql - 多个 where 子句,仅读取一个

标签 mysql sql subquery

我必须使用多个 where 子句检索信息。我只能使用嵌套查询来做到这一点。我应该能够通过一个命令提取 2 个 shiftName 查询的信息。 查找类次为“Classy Evening”和“Morning Shine”的员工的姓名。

到目前为止,我发现的任何一点运气都与这段代码有关,但这里的问题是它返回的是“Morning Shine”的结果,而不是“Classy Evening”的结果。 就像嵌套查询甚至没有被处理一样。有人可以帮忙吗?我是 SQL 新手,所以如果我的问题不够清楚,我深表歉意。

SELECT stfName, stlNname
FROM STAFF, STAFF_SHIFT_CENTER
WHERE STAFF.staffID=STAFF_SHIFT_CENTER.staffID
AND STAFF_SHIFT_CENTER.shiftName='Morning Shine'
AND (SELECT staffID FROM STAFF_SHIFT_CENTER
WHERE shiftName='Classy Evening');

最佳答案

您可以为此使用聚合。

SELECT s.stfName, s.stlNname
FROM STAFF s JOIN
     STAFF_SHIFT_CENTER ssc
     ON s.staffID = ssc.staffID
WHERE ssc.shiftName IN ('Morning Shine', 'Classy Evening')
GROUP BY s.stfName, s.stlNname
HAVING COUNT(DISTINCT ssc.shfitName) = 2;  -- each group has both shifts

注释:

  • 切勿FROM 子句中使用逗号。
  • 始终使用正确、明确、标准 JOIN 语法。
  • 表别名使查询更易于编写和阅读。
  • 限定所有列名称,以便您知道它们来自哪个表。

关于mysql - 多个 where 子句,仅读取一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56385130/

相关文章:

php - 将 Mysql 函数更改为 Mysqli 会破坏脚本

php - 我可以仅通过数据中的字母和数字查询列吗?比如 preg_replace

sql - 从动态 SQL 返回的存储过程字符串参数的范围问题

sql - GraphQL 数据库设计模式

mysql - 如何编写连接 3 个表的查询

mysql - 查找不同人群之间的重复消息

java - 从Java文件写入jsp文件

MySQL 匹配单词集

如果子查询为空,MySQL 问题

mysql - 如何优化 MySQL 中的 IN 子查询?