希望我可以简单地描述一下,如果不是我会尝试为它制作一张桌子:说我有一张桌子可以跟踪客户名称对我店铺的所有访问。我记录他们的姓名和购买金额(如果有的话)。我想得到一个从不买东西的访客名单。所以,如果我有
VisitorName PurchaseAmount
Bob 10
Bob NULL
Mary NULL
Mary NULL
我想要一个返回Mary
的查询,因为她的所有记录都在NULL
PurchaseAmount
答案 0 :(得分:1)
创建表/插入数据
CREATE TABLE visits
(`VisitorName` VARCHAR(4), `PurchaseAmount` VARCHAR(4))
;
INSERT INTO visits
(`VisitorName`, `PurchaseAmount`)
VALUES
('Bob', '10'),
('Bob', NULL),
('Mary', NULL),
('Mary', NULL)
;
<强>查询强>
在VisitorName上只是GROUP BY。 并且有一个HAVING检查所有记录是否为NULL的
SELECT
visits.VisitorName
FROM
visits
GROUP BY
visits.VisitorName
HAVING
SUM(CASE
WHEN visits.PurchaseAmount IS NULL
THEN 1
END
) = COUNT(*)
<强>结果强>
VisitorName
-------------
Mary
答案 1 :(得分:0)
您可以使用not in subselect值为非空的VisitorName
select distinct visitorName from my_table
where visitorName not in ( select VisitorName
from my_table where PurchaseAmount is not null)