sql - 将数据行限制为 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。
解决方案
如果您想要每个用户的限制,您可以使用row_number()
:
select t.*
from (select t.*, row_number() over (partition by name order by id) as seqnum
from t
) t
where seqnum <= 2;
推荐阅读
- css - 使用 CSS 将文本放置在垂直规则之上
- javascript - 如何在方法中调用的 Promise 中将记录器传递给回调函数?
- python - 为什么我无法在我的数据集上训练 YOLOv5?
- omnet++ - Omnet++ 门索引超出范围
- autodesk-forge - 自动从剖切面生成 2d 视图
- wordpress - 访问 WordPress 管理页面时出现内部服务器错误
- python - 如何在两个一起工作的脚本完成后自动启动脚本?
- gstreamer - 在使用 v4l2loopback 创建的虚拟设备中复制网络摄像头流
- kubernetes - Kubernetes 中的 9P 和 hostPath 挂载有什么区别?
- android - 如何为 Unity android 应用程序添加权限?