来自子查询的MySQL查询不起作用

时间:2010-03-25 12:50:01

标签: mysql

我试图根据表中的结果计数返回一个数字,并避免在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

1 个答案:

答案 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开始支持。