我试图根据表中的结果计数返回一个数字,并避免在IF语句中使用子查询计算结果两次。但是,在尝试运行查询时出现语法错误,我自己测试的子查询运行正常。
任何想法查询有什么问题?语法对我来说是正确的
SELECT IF(daily_count>8000,0,IF(daily_count>6000,1,2))
FROM (
SELECT count(*) as daily_count
FROM orders201003
WHERE DATE_FORMAT(date_sub(curdate(), INTERVAL 1 DAY),"%d-%m-%y") =
DATE_FORMAT(reqDate,"%d-%m-%y")
) q
我得到的错误信息是:
您的SQL语法有错误。 检查对应的手册 您的MySQL服务器版本 正确的语法在'SELECT附近使用 count(*)as daily_count 来自订单201003
答案 0 :(得分:3)
SELECT CASE WHEN daily_count > 8000 THEN 0 WHEN daily_count > 6000 THEN 1 ELSE 2 END
FROM (
SELECT count(*) as daily_count
FROM orders201003
WHERE DATE_FORMAT(date_sub(curdate(), INTERVAL 1 DAY),"%d-%m-%y") =
DATE_FORMAT(reqDate,"%d-%m-%y")
) AS q
另请注意,嵌套查询仅从MySQL 4.1
开始支持。