首页 > 解决方案 > 将数据行限制为 2

问题描述

我有一个返回数据的查询,如果它有一个列具有不同的值,它可以多次返回相同的用户,例如该列具有不同的值:contact, email, phone,face

所以我有 4 行相同的用户,其中一列具有不同的值:

id     name         status
1      user1        email
2      user1        phone
3      user1        face
4      user1        contact

我想限制为 2,所以在上述情况下,即使我有多行,我看到用户有 4 行,我希望它限制为 2。

我不能使用top或者limit因为我正在使用 SQL Server 并且还有其他行每个用户只有 1 行,因为它们只有 1 个状态,所以我的最终问题是:

如果状态字段有超过 2 行相同的用户,只需将其限制为 2。

标签: sqlsql-server

解决方案


如果您想要每个用户的限制,您可以使用row_number()

select t.*
from (select t.*, row_number() over (partition by name order by id) as seqnum
      from t
     ) t
where seqnum <= 2;

推荐阅读