关于SQL语句嵌套查询语句报错的解决问题

这个嵌套查询的语法存在错误,不知道怎么修改。希望查出来根据日期先排序再根据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 FROMSELECT 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;