繁体   English   中英

如何从复合主键表中选择*

[英]How select * from composite primary key table

我了解了如何选择与复合主键表不同的方法

; with temp as (
 select row_number() over (partition by First_PK order by Second_PK desc)
   as row_num, First_PK, Second_PK, data
 from test)
 select * from temp
 where row_num = 1

但是我现在面临另一个问题,而不是where row_num = 1我想拥有where row_num = MAX (我的意思是最大值)

如何选择与组合主键表不同

由于一个排序顺序的最后一行将是相反排序顺序的第一行,因此您只需在窗口函数row_number更改order by子句以使用升序:

; with temp as (
 select row_number() over (partition by First_PK order by Second_PK)
   as row_num, First_PK, Second_PK, data
 from test)
 select * from temp
 where row_num = 1

解决方案是:

; with temp as (
 select row_number() over (partition by First_PK order by Second_PK)
   as row_num, First_PK, Second_PK, data
 from test)
 select * from temp
 WHERE row_num=(SELECT max(row_num) FROM temp);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM