【问题标题】:I want to sort date in mysql我想在mysql中对日期进行排序
【发布时间】:2021-04-22 10:16:59
【问题描述】:

我有 2 张桌子 chat_room 有两列:id,slogan 聊天有 3 列:id、chat_room_id、updated_at

这是我的代码

SELECT chat_room.*
FROM chat_room
ORDER BY (SELECT updated_at FROM chat WHERE chat.chat_room_id = chat_room.id ) DESC;

这是我的错误 SELECT chat_room.* FROM chat_room ORDER BY (SELECT updated_at FROM chat WHERE chat.chat_room_id = chat_room.id) DESC LIMIT 0, 1000 错误代码:1242。子查询返回超过 1 行 0.00058 秒

【问题讨论】:

  • 我已经从下面的帮助中完成了
  • 你确定你接受了正确的答案吗?
  • @Strawberry 我不是。接受的答案甚至不是相同的结果集。但是,也许 OP 仍然接受它。

标签: mysql


【解决方案1】:

进行连接而不是使用子查询并实现您想要的效果不是更好吗:

SELECT
cr.*
FROM chat_room cr
JOIN chat c on cr.id=c.chat_room_id
order by updated_at desc

【讨论】:

  • ...也许,但请记住,您的答案会产生不同的结果集。
【解决方案2】:

错误告诉您ORDER BY 子句中的子查询有时会返回多条记录。这提出了哪个 updated_at 值的问题,在给定的聊天室可能有多个值的情况下。假设您想按 latest updated_at 值排序,您可以使用:

SELECT cr.*
FROM chat_room cr
INNER JOIN
(
    SELECT chat_room_id, MAX(updated_at) AS max_updated_at
    FROM chat
    GROUP BY chat_room_id
) c
    ON c.chat_room_id = cr.id
ORDER BY
    c.max_updated_at DESC;

【讨论】:

    猜你喜欢
    • 2014-07-20
    • 1970-01-01
    • 2011-09-04
    • 1970-01-01
    • 1970-01-01
    • 2011-02-10
    • 2015-06-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多