假设我们有一个包含两列的表,一列包含一些人的名字,另一列包含与每个人相关的一些值.一个人可以拥有多个价值.每个值都有一个数字类型.问题是我们要从表中为每个人选择前3个值.如果一个人的值少于3,我们会选择该人的所有值.
如果本文中提供的查询在表中没有重复项,则可以解决此问题.使用SQL从表中的每个组中选择前3个值.但如果有重复,那么解决方案是什么?
例如,如果对于一个名字John,他有5个与他相关的值.它们是20,7,7,7,4.我需要按以下顺序返回名称/值对每个名称的降序值:
-----------+-------+
| name | value |
-----------+-------+
| John | 20 |
| John | 7 |
| John | 7 |
-----------+-------+
Run Code Online (Sandbox Code Playgroud)
John应该只返回3行,即使John有3个7.
sql ×1