gpt4 book ai didi

mysql - 查找符合条件的唯一列

转载 作者:行者123 更新时间:2023-11-29 21:20:05 25 4
gpt4 key购买 nike

我有一个由多个外部用户写入的 SQL 表。每个用户都有自己的 ID,并且一次记录一条消息。该表中的每一行都有一个名为 message_id 的自动递增字段。换句话说,表中的每一行都有自己的唯一标识符。因此,如果要按 message_id 列对表进行排序,他将得到按时间顺序排序的所有消息。

是否有一个 SQL 命令可以返回每个用户记录的最新消息?

我可以分两步完成此操作:

  1. 获取 user_ids 列表。
  2. 对于每个 user_id:

    SELECT * 
    FROM myTABLE AS T WHERE T.user_id=user_id
    ORDER BY message_id DESC
    LIMIT 1

但我认为有更好的方法。

谢谢

最佳答案

一种方法是 joinwhere 条件:

select t.*
from mytable t
where t.id = (select max(t2.id) from mytable t2 where t2.user_id = t.user_id);

为了获得最佳性能,您需要在 mytable(user_id, id) 上建立索引。

如果没有这样的索引,您最好使用显式join:

select t.*
from mytable t join
(select max(id) as maxid
from mytable t2
group by user_id
) tt
on t.id = tt.maxid;

关于mysql - 查找符合条件的唯一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35758865/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com