从LEFT JOIN设置NULL列的默认值并使用WHERE过滤

Whi*_*ant 11 mysql sql left-join

我有一个项目表,我有一个单独的表格,其中包含每个项目的个别购买.并非每件商品都已购买.我正在选择购买计数并将其与items表连接,其语句类似于以下内容:

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
Run Code Online (Sandbox Code Playgroud)

这导致数据类似于:

+------+-----------------+
| name | purchases_count |
|------+-----------------+
| Shoe | 12              |
| Belt | NULL            |
+------+-----------------+
Run Code Online (Sandbox Code Playgroud)

当我想在上面过滤这个结果时,我的问题出现了purchases_count.如果我使用WHERE purchases_count < 10或类似的东西,根本没有销售记录的项目(即具有NULL价值的项目)将从搜索中排除.

我试图使用COALESCE(purchases_count,0) AS purchases_count哪个正确地将NULL记录设置为0,但在使用时它们仍然没有出现WHERE.我怀疑这COALESCE是在发生之后发生的WHERE.

我希望能够使用WHERE并包含NULL结果(作为零)来过滤此数字.有什么建议?

wrs*_*der 8

别名一般不适用的WHERE条款-尝试COALESCE(purchases_count,0) AS purchases_count_2where purchases_count_2 < 10,看看我的意思.

where COALESCE(purchases_count,0) < 10 应该管用.