我有一個項目表,我有一個單獨的表,其中包含每個項目的單獨購買。並非每件商品都已購買。我選擇了購買數量,並與項目表類似如下的語句將它:在LEFT JOIN的NULL列上設置默認值並使用WHERE過濾
SELECT items.name, purchases_count
FROM `items`
LEFT JOIN (SELECT sales.item_name, SUM(unit_sales) AS purchases_count
FROM sales GROUP BY item_name) sales ON sales.item_name = items.uid
這導致類似的數據:
+------+-----------------+
| name | purchases_count |
|------+-----------------+
| Shoe | 12 |
| Belt | NULL |
+------+-----------------+
我的問題出現時,我想過濾這個結果在purchases_count
。如果我使用WHERE purchases_count < 10
或類似的東西,則根本沒有銷售記錄的項目(即值爲NULL
的項目)將被排除在搜索之外。
我曾嘗試使用COALESCE(purchases_count,0) AS purchases_count
,它將NULL
記錄正確設置爲0,但在使用WHERE
時仍未顯示。我懷疑COALESCE
發生在WHERE
之後。
我希望能夠使用WHERE
對此編號進行過濾,並且如果可能,請包括NULL
結果(如爲零)。有什麼建議麼?
`alias`的左連接表是相同的表名,這是很好的做法? – diEcho 2011-12-16 18:03:14
SQL查詢已被簡化爲只關注問題,實際的SQL與此不同。 – 2011-12-16 18:06:39