sql – 在一个语句中选择两个表的连接中的第一行
发布时间:2020-05-23 09:29:27 所属栏目:MsSql 来源:互联网
导读:我需要从连接表A和B的查询中选择第一行.在表B中存在多个具有相同名称的记录.两个表中的任何一个没有标识符.因为我不拥有数据库,所以我不能改变方案. TABLE ANAMETABLE BNAMEDATA1DATA2Select Distinct A.NAME,B.DATA1,B.DATA2 From A Inner Join B on A.NAME
|
我需要从连接表A和B的查询中选择第一行.在表B中存在多个具有相同名称的记录.两个表中的任何一个没有标识符.因为我不拥有数据库,所以我不能改变方案. TABLE A NAME TABLE B NAME DATA1 DATA2 Select Distinct A.NAME,B.DATA1,B.DATA2 From A Inner Join B on A.NAME = B.NAME 这给了我 NAME DATA1 DATA2 sameName 1 2 sameName 1 3 otherName 5 7 otherName 8 9 但是我需要每个名称只检索一行 NAME DATA1 DATA2 sameName 1 2 otherName 5 7 我可以通过将结果添加到带有标识列的临时表中,然后选择每个名称的最小ID来执行此操作. 这里的问题是我需要在一个单一的声明中这样做. 解决方法这将工作:with temp as (
select A.NAME,B.DATA2,row_number() over (partition by A.NAME order by A.NAME) as rownum
from TABLEA A inner join TABLEB B
on A.NAME = B.NAME
)
select NAME,DATA1,DATA2 from temp where rownum = 1
如果要选择data1的最小值,并在其data2中,则使用此变体: with temp as (
select A.NAME,row_number() over (partition by A.NAME order by B.DATA1,B.DATA2) as rownum
from TABLEA A inner join TABLEB B
on A.NAME = B.NAME
)
select NAME,DATA2 from temp where rownum = 1
这两个查询将给每个名称一行. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
