回答

收藏

sql-从基于组的行中获取ID

技术问答 技术问答 258 人阅读 | 0 人回复 | 2023-09-12

表A9 Y/ Z' l5 {. o
tableAID 7 N& B5 Q" m' D- F8 _. m/ Q
tableBID' D7 e; v- l% \4 N3 ]% ]9 ]
年级
表B/ ~  Y: c7 S( d8 `( J
tableBID9 j* y" N; j+ ~0 p5 L
姓名
8 k9 F7 b  F) [7 x, u描述
表A从两个表中tableBID链接到表b。
! c- T& D; _" z, O) L& @+ W- C假如我想做表B找到表中的每一行A有最高等级的行,可以这样编写查询:
; w4 e' ]+ `+ L) x3 |4 o% ?6 V) }select max(grade) from TableA group by tableBID然而,我不仅想要成就,还想要成就和银行ID。
3 h; i( v, {+ a4 I0 P2 s% Z$ u                                                               
% ^" K7 |: p/ k$ m. t    解决方案:                                                               
' L3 ~$ F4 U! |3 N" {- S# j                                                                可以尝试类似
8 ~3 I, O1 E, C: jSELECT  a.*FROM    TableA a INNER JOIN    SELECT  tableBID,                   MAX(grade) MaxGrade            FROM    TableA            GROUP BY tableBID        ) B ON a.tableBID = B.tableBID AND a.grade = B.MaxGrade使用Sql Server 2005 ROW_NUMBER你也可以尝试函数7 j9 O4 T8 l2 ?! |* U
SELECT  tableAID,       tableBID,       gradeFROM    (                                      SELECT  *,                   ROW_NUMBER() OVER (PARTITION BY tableBID ORDER BY grade DESC) RowNum            FROM    @TableA       AWHERE   a.RowNum =
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则