gpt4 book ai didi

mysql - 获取每个 id 的一个结果,但仅获取具有最新日期的结果

转载 作者:行者123 更新时间:2023-11-29 09:44:03 25 4
gpt4 key购买 nike

我有一个将文档存储在数据库中的系统,每个用户可以创建多个文档,并且每个文档保存在不同的版本中。每个用户都有一个唯一的 token 。每个文档都有一个唯一的 ID。每个文档在不同时间被多次存储。

我的表格示例:

|AI  |token |docid   time|
|1 |id1 |doc1 1000|
|2 |id2 |doc2 1001|
|3 |id1 |doc1 909 |
|4 |id2 |doc1 1020|
|5 |id1 |doc3 801 |

我需要的是一个查询,它只为我提供特定用户的每个文档的最新信息。

因此,在这个示例中,我想要具有 token id1 的用户:

1   id1   doc1    1000
5 id1 doc3 801

实现此目的的查询会是什么样子?

最佳答案

使用此查询:

select token, docid, max(time) time
from tablename
group by token, docid

您将获得每个tokendocid的最新时间
如果您不需要 AI 列,那么您就完成了。
如果您还需要 AI 列,则必须将此查询加入到表中:

select t.* 
from tablename t inner join (
select token, docid, max(time) time
from tablename
group by token, docid
) g on g.token = t.token and g.docid = t.docid and g.time = t.time

如果您只需要 token = 'id1' 的结果,您可以添加条件:

where t.token = 'id1'

或者您也可以使用NOT EXISTS:

select t.* 
from tablename t
where
t.token = 'id1'
and not exists (
select 1 from tablename
where token = t.token and docid = t.docid and time > t.time
);

请参阅demo .
结果:

| ai  | token | docid | time |
| --- | ----- | ----- | ---- |
| 1 | id1 | doc1 | 1000 |
| 5 | id1 | doc3 | 801 |

关于mysql - 获取每个 id 的一个结果,但仅获取具有最新日期的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56030009/

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