[英]How to SELECT DISTINCT one column and ORDER by another column?
我有一张这样的桌子
++++++++++++++++++++++++++++++++++++++++++++++++++++++++
id | domain | domain_date | domain_status |
1 |abc_com | 2022-08-20 15:42:35 | 1 |
2 |def_com | 2022-08-20 15:44:31 | 1 |
3 |def_com | 2022-08-20 15:40:05 | 1 |
4 |abc_com | 2022-08-20 15:35:05 | 0 |
5 |ghi_com | 2022-08-20 15:25:05 | 1 |
6 |ghi_com | 2022-08-20 15:25:00 | 1 |
7 |abc_com | 2022-08-19 15:22:00 | 1 |
8 |ghi_com | 2022-08-20 15:25:05 | 1 |
9 |abc_com | 2022-08-20 15:21:00 | 1 |
10 |abc_com | 2022-08-19 15:21:20 | 1 |
++++++++++++++++++++++++++++++++++++++++++++++++++++++++
我想从表中获取五个记录的最新条目,但我不想要重复的域。 我尝试使用 SELECT DISTINCT,如果我仅使用 select 域,则 Distinct 可以正常工作,它会减少重复项,但如果选择两列
SELECT DISTINCT domain, domain_date FROM Domains
它仍然显示重复,因为日期不同
解决方法是什么?
如果您按最大域日期分组,您将获得一个不同的域列表及其最大域日期:
select
domain, max(domain_date) as MaxOfDomainDate
from table
group by domain
如果我们想获得与该日期的域记录一起出现的状态,我们可以加入这个结果集的表:
select A.domain, A.domain_date, A.domain_status
from
table A
inner join
(
select
domain, max(domain_date) as MaxOfDomainDate
from table
group by domain
) B
on A.domain = B.domain
and A.domain_date = B.domain_date;
您应该能够很容易地向这样的查询添加排序和 TOP 或 LIMIT 以获得“最新的 5”等等(我将把它作为练习留给读者;))
您可能需要创建一个联接表,在其中设置列域和域日期的条件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.