Sqlite
SQL 查詢,讓 count() 輸出 null 而不是 0
我有以下查詢,它基本上計算了客戶完成了多少訂單:
SELECT name, count(order_id) FROM customers LEFT JOIN orders ON customers.name == orders.customername GROUP BY name;
輸出是這樣的:
------------- |adam | 2| |bob | 0|
這裡 bob 在訂單表中沒有條目。所以我相信左連接會創建一個表,其中亞當的訂單列已填滿,但鮑勃沒有。
但我希望 0 改為 NULL。像這樣:
------------- |adam | 2| |bob | NULL|
我怎樣才能做到這一點?
適用於許多引擎的一件事是使用
CASE
表達式。SELECT name, CASE WHEN count(order_id) = 0 THEN NULL ELSE count(order_id) END FROM customers LEFT JOIN orders ON customers.name = orders.customername GROUP BY name;
並且不要
==
用於比較。在 SQL 中,它只是=
.
使用NULLIF。
SELECT name, NULLIF(count(order_id), 0) FROM customers LEFT JOIN orders ON customers.name = orders.customername GROUP BY name;