按日期选择最后一项
Posted
技术标签:
【中文标题】按日期选择最后一项【英文标题】:selects the last item by date 【发布时间】:2020-12-28 18:13:51 【问题描述】:我有 2 种类型的物品,1000118500 和 1000438300,我想知道如何在最新日期之前只携带最后一件物品。
所以我只有 2 行,最新的行
id item created
1 1000438300 2018-10-26 00:43:30
2 1000438300 2018-10-16 00:44:02
3 1000118500 2018-10-13 00:41:27
4 1000438300 2018-09-26 00:47:28
5 1000118500 2018-08-09 00:40:09
6 1000438300 2018-07-12 12:05:37
7 1000118500 2018-06-28 20:06:24
8 1000118500 2018-06-28 20:06:07
有人可以帮忙吗? 我正在使用 MariaDB
【问题讨论】:
我上传了一张图片没有上传,我发了几行 太好了,这里的大多数人想要线条,而不是图像! 听听@peter,能力越大,责任越大:D 【参考方案1】:你试过MAX函数吗
SELECT item, MAX(created)
FROM table
GROUP BY item
或查看此帖子:How to select id with max date group by category in PostgreSQL?
【讨论】:
【参考方案2】:您可以使用子查询进行过滤以获取每个 item
的最新行:
select t.*
from mytable t
where created = (select max(t1.created) from mytable t1 where t1.item = t.item)
此查询将利用(item, created_at)
上的索引。
【讨论】:
是的,但是您使用了不必要的子查询,不是吗? @coytech:子查询检索每个项目的最新日期,因此这是必要的。【参考方案3】:SELECT * FROM [TABLE_NAME] ORDER BY created DESC LIMIT 1
【讨论】:
我认为他想要按项目而不是所有表格的 1 个结果 不正确。 OP 想要每个项目的最后一个。特别提到需要返回2行【参考方案4】:假设created
是一个DateTime列,选择你想要的并按日期降序排列,然后将结果限制为1行,即日期最新的行
select item
from tablename
where id = 1000438300
order by created desc
limit 1
【讨论】:
以上是关于按日期选择最后一项的主要内容,如果未能解决你的问题,请参考以下文章