Sqlite

SQL 查詢,讓 count() 輸出 null 而不是 0

  • February 13, 2021

我有以下查詢,它基本上計算了客戶完成了多少訂單:

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;

引用自:https://dba.stackexchange.com/questions/285326