【发布时间】:2011-06-22 01:41:59
【问题描述】:
考虑以下 SQL Server 表:
ID | X | Y
------+-------+-------
1 | 1 | 1
2 | 1 | 2
3 | 1 | 3
4 | 2 | 40
5 | 2 | 500
6 | 3 | 1
7 | 3 | 100
8 | 3 | 10
我需要选择Y按x分组的最大值的行的ID,即:
ID | X | Y
------+-------+-------
3 | 1 | 3
5 | 2 | 500
7 | 3 | 100
查询将嵌套多次,因此需要最佳性能解决方案...
【问题讨论】:
-
你写了“MS SQL”,但用“mysql”标记了它,我将为 MySQL 给出答案(也许对 MS SQL 也有效)。
-
没问题,我会尝试翻译成MS SQL...
-
那么我的链接给你三个解决方案。看,我们甚至在 Stack Overflow 上也有一个标签。 ;)
-
@AndreKR:如果我没记错的话,
greatest-n-per-group的意思是“每组最多的 N 个项目”。 -
根据stackoverflow.com/tags/greatest-n-per-group/info,标签适用于这两种情况。
标签: sql sql-server greatest-n-per-group