This question already has answers here:
How to return rows that have the same column values in MySql
(3个答案)
去年关门了。
我试着对
当我在
我的数据:
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
我把
只有当您的数据永远不能有一个具有相同
(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
最佳答案
条件不能返回任何内容,因为它永远不能为真。所以你得到的是预期的。如果要获取同时具有StyleID = 15 AND StyleID = 24
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;
我把
StyleID
和c.CustFirstName
添加到c.CustLastName
中。或者,您只能按ID分组,然后在名字和姓氏上使用GROUP BY
或MIN()
。两种方法或多或少都是一样的。只有当您的数据永远不能有一个具有相同
MAX()
的客户超过一次时,此查询才会起作用(例如:customer 1001有3条记录具有StyleID
15、24和24)。10-01 07:49