查找在列中同时具有两个指定值的客户

时间:2018-11-05 19:25:52

标签: sql group-by

我有一个名为CustomerTable的表:

客户表

我想找到同时提供HouseApartment服务的客户。理想情况下,我应该让Peter和Amanda返回我的结果。

我正在尝试以下查询,但它返回的是拥有房屋或公寓的所有客户。请帮助

select * 
from CustomerTable 
where SERVICE in ('House', 'Apartment')

3 个答案:

答案 0 :(得分:1)

您可以使用having子句:

select customer_name
from CustomerTable
where SERVICE in ('House', 'Apartment')
group by customer_name
having min(service) <> max(service);

答案 1 :(得分:1)

您可以像这样使用HAVING子句:

SELECT CUSTOMER_NAME
FROM CustomerTable
WHERE SERVICE IN ('House', 'Apartment')
GROUP BY CUSTOMERNAME
HAVING COUNT(DISTINCT SERVICE) = 2

答案 2 :(得分:0)

你在这里

CREATE TABLE CustomerTable(
  CustomerName VARCHAR(45),
  Service VARCHAR(45)
);

INSERT INTO CustomerTable VALUES
('Mark', 'House'),
('Mark', 'Condo'),
('Ashley', 'Condo'),
('John', 'House'),
('John', 'Condo'),
('David', 'House'),
('Peter', 'House'),
('Peter', 'Apartment'),
('Peter', 'Condo'),
('Amanda', 'House'),
('Amanda', 'Apartment');

SELECT    CustomerName
FROM      CustomerTable
WHERE     Service IN ('House', 'Apartment')
GROUP BY  CustomerName
HAVING    MAX(Service) != MIN(Service);

返回:

+----+--------------+
|    | CustomerName |
+----+--------------+
|  1 | Amanda       |
|  2 | Peter        |
+----+--------------+