表A
表B
表A从两个表中的tableBID链接到表b。
如果我想为表B中的每一行找到表A中具有最高等级的行,则可以这样编写查询:
select max(grade) from TableA group by tableBID
但是,我不仅想要成绩,还想要成绩和该行的ID。
您可以尝试类似
SELECT 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函数,您也可以尝试
SELECT tableAID, tableBID, grade FROM ( SELECT *, ROW_NUMBER() OVER (PARTITION BY tableBID ORDER BY grade DESC) RowNum FROM @TableA ) A WHERE a.RowNum = 1