按日期选择最后一项

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

【讨论】:

以上是关于按日期选择最后一项的主要内容,如果未能解决你的问题,请参考以下文章

取消layUI中日期选择控件默认填充日期

Excel如何根据日期自动抓取数据?

elementui日期选择能支持按旬选择吗?

按 esc 后无法打开日期选择器

选择查询优化

index日期取数