mysql - 我们可以在 WHERE 子句中对同一列使用多个 AND 条件吗?
问题描述
我尝试AND
在子句中使用同一列WHERE
,但它没有给我任何输出。但是数据集中有两个满足给定条件的客户名称。我哪里出错了?
SELECT CONCAT(c.CustFirstName," ",c.CustLastName) AS CustomerName
FROM Musical_Preferences mp
JOIN Customers c ON c.CustomerID = mp.CustomerID
WHERE mp.StyleID = 15 AND mp.StyleID = 24;
当我OR
在子句中放入相同的列时,上面的查询工作正常WHERE
,但为什么不AND
呢?
我的数据:
CustomerID CustFirstName CustLastName CustStreetAddress CustCity CustState CustZipCode CustPhoneNumber CustomerID StyleID PreferenceSeq 10001 Doris Hartwig 4726 - 11th Ave. NE Seattle WA 98105 555-2671 10001 10 2 10001 Doris Hartwig 4726 - 11th Ave. NE Seattle WA 98105 555-2671 10001 22 1
解决方案
条件StyleID = 15 AND StyleID = 24
永远不会返回任何东西,因为它永远不会为真。所以你得到的是预期的。如果要获取同时具有StyleID
15 和 24 的客户(在不同的记录中),则需要按客户对记录进行分组:
SELECT CONCAT(c.CustFirstName," ",c.CustLastName) AS CustomerName
FROM Musical_Preferences mp
JOIN Customers c ON c.CustomerID = mp.CustomerID
WHERE mp.StyleID IN(15, 24)
GROUP BY c.CustomerID, c.CustFirstName, c.CustLastName
HAVING COUNT(mp.CustomerID) = 2;
我在. c.CustFirstName
_ 或者,您只能按 ID 分组,然后在名字和姓氏上使用或。两种方式或多或少都相同。c.CustLastName
GROUP BY
MIN()
MAX()
此查询仅在您的数据永远不能有一个客户StyleID
多次使用相同的客户时才有效(例如:客户 1001 有 3 条记录,分别为StyleID
15、24 和 24)。
推荐阅读
- visual-studio-code - 在 vs 代码中删除文件中的导航器
- java - 如何在方法上测试 Spring 的 Cacheable?
- python - 在 matplotlib 中将字符串转换为浮点数会产生错误
- mongodb - mongodb 奇怪的 RECOVERY 数据库突然出现
- c# - C#位图和图形,内存问题和在内存中存储屏幕截图
- python - 过滤 DataFrame 离开行,其中 Needle 是 columnB 中存在的列表的一部分
- r - 根据 Rstudio 中现有列的字符串值添加新列
- vue.js - 将所见即所得库附加到动态生成的输入
- node.js - 续集别名
- delphi - Delphi 和 Indy 兼容性