簡體   English   中英

從表中僅選擇具有相同鍵值的一行

[英]Select only one row with same key value from a table

我有這張桌子:

reg_no    |    cname    |  no
1         |    X        |  1
1         |    Y        |  2
2         |    X        |  1
2         |    Y        |  2

我想要做的是選擇所有這些行,但是當我在desc中排列它時,我只希望為每個reg_no排一行(它應該只為每個reg_no獲得最高的行)。

輸出應為:

1 Y 2
2 Y 2

使用Row_Number()窗口函數

select Reg_no,C_name,no from
(
select row_number() over(partition by reg_no order by no desc) Rn,*
from yourtable
) A
where rn=1

ANSI SQL標准將在sql server 2000 在每個reg_no找到max ,然后將結果join主表。

select A.Reg_no,A.C_name,A.no 
from yourtable As A
Inner Join
(
select max(no) As no,Reg_no
from yourtable
group by Reg_No
) As B
on A.No=B.No and A.Reg_No=B.Reg_no

在使用CROSS APPLY的MSSQL中,這將是

SELECT DISTINCT 
    r1.reg_no, r2.cname, r2.no
FROM
    table_name r1 
CROSS APPLY 
(SELECT TOP 1
    r.cname, r.no
FROM 
    table_name r
WHERE r1.reg_no = r.reg_no 
ORDER BY r.no DESC) r2

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM