需要一个查询来从我的 sql 中的表中获取不同的数据
Posted
技术标签:
【中文标题】需要一个查询来从我的 sql 中的表中获取不同的数据【英文标题】:Need a Query to fetch distinct data from a table in my sql 【发布时间】:2020-04-21 15:32:31 【问题描述】:我有一个包含以下列的历史表:
ID Previous Current User createdOn
1 RED BLUE System 2020-04-14 09:24:49.765000
2 GREEN YELLOW ADMIN 2020-04-12 03:56:34.765000
3 GREEN BLUE System 2020-04-14 11:37:21.765000
4 ORANGE RED System 2020-04-15 11:24:49.765000
我需要一个查询来从表中获取数据,即使用户一天有多个条目,每个用户也应该在一天内只返回一行
所需的结果集应如下所示:
User CreatedOn
ADMIN 2020-04-12 03:56:34.765000
System 2020-04-14 09:24:49.765000
System 2020-04-15 11:24:49.765000
【问题讨论】:
您能分享一下您目前尝试过的问题吗? 【参考方案1】:您可以按用户和日期分组,并为每个用户获取最小的createdOn
:
select User, min(createdOn) createdOn
from History
group by User, date(createdOn)
请参阅demo。 结果:
| User | createdOn |
| ------ | -------------------------- |
| ADMIN | 2020-04-12 03:56:34.765000 |
| System | 2020-04-14 09:24:49.765000 |
| System | 2020-04-15 11:24:49.765000 |
【讨论】:
【参考方案2】:您可以返回最近的记录,例如:
select h.*
from history h
where h.createdOn = (select max(h2.createdOn)
from history h2
where h2.user = h.user and
h2.createdOn >= date(h.createdOn) and
h2.createdOn < date(h.createdOn) + interval 1 day
);
【讨论】:
以上是关于需要一个查询来从我的 sql 中的表中获取不同的数据的主要内容,如果未能解决你的问题,请参考以下文章