希望我能形容这只是如果不是我会尽力做一个表吧:说我有,通过跟踪所有访问我的商店表顾客姓名。我记录他们的姓名和购买金额(如果有的话)。我想得到一个从不买东西的游客名单。所以,如果我有找到所有的客户记录,所有的记录在价格领域有NULL值
VisitorName PurchaseAmount
Bob 10
Bob NULL
Mary NULL
Mary NULL
我想返回Mary
查询,是因为她所有的记录都NULL
在PurchaseAmount
希望我能形容这只是如果不是我会尽力做一个表吧:说我有,通过跟踪所有访问我的商店表顾客姓名。我记录他们的姓名和购买金额(如果有的话)。我想得到一个从不买东西的游客名单。所以,如果我有找到所有的客户记录,所有的记录在价格领域有NULL值
VisitorName PurchaseAmount
Bob 10
Bob NULL
Mary NULL
Mary NULL
我想返回Mary
查询,是因为她所有的记录都NULL
在PurchaseAmount
你可以使用具有值不为空一个不是在子查询的VisitorName
select distinct visitorName from my_table
where visitorName not in (select VisitorName
from my_table where PurchaseAmount is not null)
创建表/插入数据
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。 并且a有如果所有的记录都是空的
SELECT
visits.VisitorName
FROM
visits
GROUP BY
visits.VisitorName
HAVING
SUM(CASE
WHEN visits.PurchaseAmount IS NULL
THEN 1
END
) = COUNT(*)
结果
VisitorName
-------------
Mary
有趣哪些检查是中间选择工作正常,但外部选择得到一个空集。我手动检查,并有许多客户的所有订单都是NULL,所以它不是数据。 – user3649739
解释更好..这个查询很简单,所以你可以很容易测试..如果不工作显示我参与的价值..,(检查你是否有空值(非空) – scaisEdge
我要删除我上面的评论时我发现我的错误,但认为它可能对未来的某个人有所帮助;我有一个记录,其中CustomerName是NULL,导致Empty Set从外部选择,现在很好用! – user3649739