表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