mysql-5.7 - 如何获取所有唯一 ID 的第一行或任意 3 行?
问题描述
样品表
╔════╤═══════╗
║ id │ value ║
╠════╪═══════╣
║ 1 │ a ║
╟────┼───────╢
║ 1 │ b ║
╟────┼───────╢
║ 1 │ c ║
╟────┼───────╢
║ 1 │ d ║
╟────┼───────╢
║ 2 │ e ║
╟────┼───────╢
║ 2 │ f ║
╟────┼───────╢
预期产出
╔════╤═══════╗
║ id │ value ║
╠════╪═══════╣
║ 1 │ a ║
╟────┼───────╢
║ 1 │ b ║
╟────┼───────╢
║ 1 │ c ║
╟────┼───────╢
║ 2 │ e ║
╟────┼───────╢
║ 2 │ f ║
╟────┼───────╢
像这样的东西。如果值少于 3 个,仍然获取该特定 ID 的任何行。
我尝试使用嵌套选择和限制,但没有奏效。
MYSQL 5.7
谢谢
解决方案
如果您使用的是 MySQL 8+,那么ROW_NUMBER
可以在这里工作:
WITH cte AS (
SELECT id, value, ROW_NUMBER() OVER (PARTITION BY id ORDER BY value) rn
FROM yourTable
)
SELECT id, value
FROM cte
WHERE rn <= 3
ORDER BY id, value;
演示
推荐阅读
- wordpress - 警告:为 foreach() 旅行预订行 144 提供的参数无效
- python - mypy 和 lambda 退出()
- sql - 计算每个日期和国家/地区的价值份额并分别处理零值
- godaddy-api - 在现有 GoDaddy 域上进行身份验证和部署
- javascript - 即使我们不点击按钮(而是点击轨道),如何进行更改?
- python - 出现特定数字和单词时的正则表达式匹配
- unity3d - 对物体进行测量
- python - 有没有办法在 tables.export() 中添加新行
- discord.js - 无法将我的代码转移到另一个机器人上
- python - 如何使用活动状态配方进行调试?