Mysql查询发布日期减去7天

Mysql查询发布日期减去7天,mysql,sql,yii,Mysql,Sql,Yii,这不断出现错误,我不明白为什么 SELECT i.user_id FROM (SELECT SUM(us.score) AS score_sum, us.user_id FROM user_scores us WHERE us.created >= DATE(DATE_SUB(NOW(),INTERVAL 7 DAY)) GROUP BY us.user_id) AS i ORDER BY i.score_sum LIMIT 1 带

这不断出现错误,我不明白为什么

SELECT
  i.user_id
FROM (SELECT
    SUM(us.score) AS score_sum,
    us.user_id
      FROM user_scores us
      WHERE us.created >= DATE(DATE_SUB(NOW(),INTERVAL 7 DAY))
      GROUP BY us.user_id) AS i
ORDER BY i.score_sum
LIMIT 1
带有消息的异常“CDBEException”

CDbCommand无法执行SQL语句:CDbCommand无法准备SQL语句:SQLSTATE[HY000]:常规错误:1接近7:语法错误

执行的SQL语句为:

SELECT
  i.user_id
FROM (SELECT
    SUM(us.score) AS score_sum,
    us.user_id
      FROM user_scores us
      WHERE us.created >= DATE(DATE_SUB(NOW(),INTERVAL 7 DAY))
      GROUP BY us.user_id) AS i
ORDER BY i.score_sum
LIMIT 1



<?php

class WinnerCommand extends CConsoleCommand
{
    public function actionSelect()
    {
        $sql = "SELECT i.user_id FROM
            (SELECT SUM(us.score) AS score_sum, us.user_id FROM user_scores us
            WHERE us.created >= DATE(DATE_SUB(NOW(),INTERVAL 7 DAY))
            GROUP BY us.user_id) AS i
            ORDER BY i.score_sum
            LIMIT 1";
        $user_id = Yii::app()->db->createCommand($sql)->queryScalar();
        echo $user_id;
        return $user_id;
    }
}


?>

我无法解释这个问题,但您可以在表达式中删除子查询。也许这将有助于:

        SELECT us.user_id
        FROM user_scores us
        WHERE us.created >= DATE(DATE_SUB(NOW(), INTERVAL 7 DAY))
        GROUP BY us.user_id)
        ORDER BY SUM(us.score)
        LIMIT 1

在您的表中创建了什么数据类型?您通过什么API调用它?您是否在任何地方使用预处理语句占位符?如果您在客户端中直接执行上面的查询,它是否会像应该的那样运行?什么MySQL版本?创建的是一个时间戳。我在Yii框架内使用它。我认为我们不能在ORDER BY close中使用聚合和。@artragis。这是允许的,在MySQL和我所知道的所有其他支持SQL的数据库中。好吧,我不知道,很高兴打开这个主题。