查找客户的所有记录,其中所有记录在价格字段中都具有NULL值

时间:2017-03-31 16:31:59

标签: mysql

希望我可以简单地描述一下,如果不是我会尝试为它制作一张桌子:说我有一张桌子可以跟踪客户名称对我店铺的所有访问。我记录他们的姓名和购买金额(如果有的话)。我想得到一个从不买东西的访客名单。所以,如果我有

VisitorName PurchaseAmount

Bob 10

Bob NULL

Mary NULL

Mary NULL

我想要一个返回Mary的查询,因为她的所有记录都在NULL

中有PurchaseAmount

2 个答案:

答案 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)