我有一个表,其中包含如下所示的数据,
+-------+----------------+----------------+
| Id | TierUnitId | ObjectNumber |
+-------+----------------+----------------+
| 10 | 3599 | 1 |
| 10 | 3599 | 2 |
| 20 | 3599 | 3 |
| 20 | 3599 | 4 |
| 20 | 3599 | 1 |
| 30 | 3599 | 2 |
| 30 | 3599 | 3 |
+-------+----------------+----------------+
我有一个选择查询
SELECT ID FROM TEST
FETCH NEXT :LIMIT ROWS ONLY
现在我想用limit的值来限制行数。当Limit的值为2时,我希望有两个不同的ID,即最多5行。然而,从查询中,我只得到两行ID为10的行。有人能帮助我限制使用不同id的行吗?我想要的是输出中的不同ID的总数是有限的。
3条答案
按热度按时间8zzbczxx1#
使用
DENSE_RANK
解析函数根据唯一/不同的ID
值对行进行编号,然后对其进行过滤:其中,对于样本数据:
输出:
| ID|
| - -----|
| 十个|
| 十个|
| 二十个|
| 二十个|
| 二十个|
rwqw0loc2#
正如你在评论中所说,你需要能够定义应该显示多少个不同的id。对于这种情况,我建议您先找到这些ID(请参阅distinct_ids部分),然后再获取所需的所有行
vybvopom3#
如果你需要 * 一些 * 不同的ID,没有任何特定的顺序,那么你可以把
fetch next ...
放进子查询中,关键字是distinct
。ID
列上的索引将适合于避免两次全表扫描(我假设ID
不能为空)