作者热门文章
- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我有一个项目表,还有一个单独的表,其中包含每个项目的单独购买。并非每件商品都已购买。我正在选择购买计数,并使用类似于以下的语句将其与项目表连接起来:
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
如果可能的话,结果(作为零)。有什么建议吗?
最佳答案
别名通常不适用于 WHERE
条款 - 尝试 COALESCE(purchases_count,0) AS purchases_count_2
与 where purchases_count_2 < 10
明白我的意思。
where COALESCE(purchases_count,0) < 10
应该可以。
关于mysql - 从 LEFT JOIN 设置 NULL 列的默认值并使用 WHERE 进行过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8538063/
我是一名优秀的程序员,十分优秀!