mysql - 冷门产品的 SQL 查询
问题描述
为了计算 MySQL 5.7 中最不受欢迎的产品,我运行以下查询:
SELECT
ClientOrderItem.ItemId AS ID_product,
countIf(Orders.ClientOrderStateID = 3) AS cnt
FROM
ClientOrderItem
LEFT JOIN Orders ON ClientOrderItem.ClientOrderID = Orders.id
LEFT JOIN AdditionalInfo ON ClientOrderItem.ClientOrderID = AdditionalInfo.ClientOrderID
WHERE
Orders.ClientOrderStateID = 3
AND (
AdditionalInfo.code = 'IsTestOrder'
AND AdditionalInfo.value = '0'
)
GROUP BY cnt
ORDER BY cnt DESC;
我收到以下错误:
SQL 错误 [1305] [42000]: FUNCTION ozon.countIf 不存在
你能告诉我用什么替换“countIf”函数吗?谢谢。
解决方案
正如评论中提到的 mysql 不支持'countif',您可以遵循以下语法:
SELECT
ClientOrderItem.ItemId AS ID_product,
count(IF Orders.ClientOrderStateID = 3,1,NULL) AS cnt
FROM
...
或者
SELECT
ClientOrderItem.ItemId AS ID_product,
count(case when Orders.ClientOrderStateID = 3 then 1 end) AS cnt
FROM
...
推荐阅读
- c# - 如何设置 SQL Server 数据库以允许多个用户通过 C# App 连接?
- excel - 如何从最近的文件夹中粘贴 CSV 数据?
- android - 仅当应用程序处于前台时才从后台服务启动活动
- html - 为什么我的界面在浏览器和谷歌设备工具栏中看起来不同?
- circleci - 如何将字符串设置为当前日期时间?
- javascript - JavaScript:重置函数绑定
- php - 比较PHP中的路径
- c# - 为什么 Listview 不显示 DataTable 中的值?
- java - 在验证用户身份后调用另一个 JFrame
- android - 编译具有相同文件名但具有不同路径的源文件