希望我能形容這只是如果不是我會盡力做一個表吧:說我有,通過跟蹤所有訪問我的商店表顧客姓名。我記錄他們的姓名和購買金額(如果有的話)。我想得到一個從不買東西的遊客名單。所以,如果我有找到所有的客戶記錄,所有的記錄在價格領域有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