This question already has answers here:
How to return rows that have the same column values in MySql
(3个答案)
去年关门了。
我试着对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 custflastname CustStreetAddress CustCity CustState CustZipCode CustPhoneNumber CustomerID StyleID首选项
地址:10001 Doris Hartwig 4726-11 Ave.N.E.Seattle WA 98105 555-2671 10001 10 2
地址:10001 Doris Hartwig 4726-11 Ave.N.E.Seattle WA 98105 555-2671 10001 22 1
mysql - 我们可以对WHERE子句中的同一列使用多个AND条件吗?-LMLPHP

最佳答案

条件不能返回任何内容,因为它永远不能为真。所以你得到的是预期的。如果要获取同时具有StyleID = 15 AND StyleID = 2415和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;

我把StyleIDc.CustFirstName添加到c.CustLastName中。或者,您只能按ID分组,然后在名字和姓氏上使用GROUP BYMIN()。两种方法或多或少都是一样的。
只有当您的数据永远不能有一个具有相同MAX()的客户超过一次时,此查询才会起作用(例如:customer 1001有3条记录具有StyleID15、24和24)。

10-01 07:49