这个嵌套查询的语法存在错误,不知道怎么修改。希望查出来根据日期先排序再根据ID分组
日期关键字set_date,希望通过c_id分组,表名order
select c_id,set_date from(select c_id,set_date from order
where set_date >=DATE_SUB(CURDATE(),INTERVAL 4 DAY) order by set_date DESC)group by c_id;
SELECT c_id, set_date
FROM (
SELECT c_id, set_date
FROM `order`
WHERE set_date >= DATE_SUB(CURDATE(), INTERVAL 4 DAY)
ORDER BY set_date DESC
) AS sub_query
GROUP BY c_id, set_date
ORDER BY set_date ASC, c_id ASC;
修改的地方包括:
在外层查询中添加了 set_date 以便可以按照日期和ID进行排序。
将 order 改成了 order 来避免SQL关键字冲突。
在内层查询的最后添加了一个别名 sub_query,以便可以在外层查询中引用它。
在外层查询中添加了 set_date 以便可以按照日期和ID进行排序。
在 GROUP BY 子句中添加了 set_date 以便与 SELECT 列表匹配。
首先 ORDER 在mysql里是关键字,你的sql在写的时候需要加上`` 即 order
嵌套循环加个别名
如下:
SELECT
a.c_id,
a.set_date FROM(SELECT c_id,
set_date
FROM
`ORDER`
WHERE
set_date >= DATE_SUB( CURDATE(), INTERVAL 4 DAY )
ORDER BY
set_date DESC)a GROUP BY a.c_id;
或者,不使用嵌套循环应该也可以:
SELECT
c_id,
set_date
FROM
`order`
WHERE
set_date >= DATE_SUB( CURDATE(), INTERVAL 4 DAY )
GROUP BY
c_id
ORDER BY
set_date DESC;