sql - 选择不同的最新行
问题描述
如何选择不重复的最新行?
select distinct FirmaTransportowa.dbo.Kurier.id, FirmaTransportowa.dbo.Zlecenie.adresKoncowy, FirmaTransportowa.dbo.ZlecenieKurier.id
from FirmaTransportowa.dbo.Kurier
join FirmaTransportowa.dbo.ZlecenieKurier on FirmaTransportowa.dbo.Kurier.id= FirmaTransportowa.dbo.ZlecenieKurier.kurierId
join FirmaTransportowa.dbo.Zlecenie on FirmaTransportowa.dbo.Zlecenie.id= FirmaTransportowa.dbo.ZlecenieKurier.zlecenieId
where FirmaTransportowa.dbo.Kurier.id = FirmaTransportowa.dbo.ZlecenieKurier.kurierId
order by FirmaTransportowa.dbo.ZlecenieKurier.id desc
这是我上面的结果:
3 Gdynia 6
2 Katowice 5
2 Gdynia 4
2 Gdynia 3
2 Poznań 2
3 Warszawa 1
我想保留上面的前两行,其中第一行被定义为在第 3 列中具有最大值:
3 Gdynia 6
2 Katowice 5
解决方案
首先,让我向您介绍表别名 - 看看您的查询是多么容易阅读。
现在您可以使用该功能解决您的问题row_number()
,然后只选择行号 1。
with cte as (
select K.id Col1, Z.adresKoncowy Col2, ZK.id Col3
, row_number() over (partition by K.id order by ZK.id desc) RowNum
from FirmaTransportowa.dbo.Kurier K
join FirmaTransportowa.dbo.ZlecenieKurier ZK on K.id = ZK.kurierId
join FirmaTransportowa.dbo.Zlecenie Z on Z.id = ZK.zlecenieId
where K.id = ZK.kurierId
-- order by ZK.id desc
)
select Col1, Col2, Col3
from cte
where RowNum = 1
order by Col1 desc;
注意:一定要使用比我更好的列别名——我不知道你的列代表什么,但你知道。
推荐阅读
- java - 是否有一个 json 简单函数可以从 jsonobject 获取所有键?
- graphql - Graphql 获取 2 个标签之间的所有提交
- nlp - RASA NLU-我想在单词之后提取任何内容(单词、数字或特殊字符)作为实体
- php - 用于匹配查询字符串中的模式的正则表达式
- html - C 程序从 HTML GET 输入提供奇怪的输出并在 HTML 页面底部打印
- excel - 插入行代码后为整行着色
- excel - Excel - 具有相同值的单元格周围的边框(条件格式)
- java - Spring `@RolesAllowed` 被忽略了吗?
- java - Android mergeDebugResources 失败
- java - MappedByteBuffer 如何进行垃圾收集?