用于选择行“系列”的修订号的SQL

时间:2010-07-04 12:54:38

标签: sql mysql group-by greatest-n-per-group

给出表

| id | user | 
| 1  | 1    |
| 1  | 2    |
| 1  | 3    |
| 1  | 4    |
| 2  | 5    |
| 2  | 6    |
| 2  | 7    |
| 2  | 8    |

我想编写一个查询,它将为id = 1返回3行,为id = 2返回3行(顺序无关紧要,但我认为可以强制执行)。

所以最终结果应该是这样的(注意,每个id有3行):

| id | user | 
| 1  | 1    |
| 1  | 2    |
| 1  | 3    |
| 2  | 5    |
| 2  | 7    |
| 2  | 8    |

我该如何编写这个SQL?我对HAVING的尝试到目前为止没有带来任何有用的东西。

谢谢你, 格言。

4 个答案:

答案 0 :(得分:0)

我希望这个链接有帮助:

http://blog.aharbick.com/2006/09/mysql-groupwise-limiting.html

在这些问题的答案中更多:

mysql limit inside group?

MYSQL - Group by limit

答案 1 :(得分:0)

several questions here on SO覆盖了这个区域。

答案 2 :(得分:0)

我怀疑你想要的是

SELECT DISTINCT *
     FROM my_table;

但这不是你所说的问题的答案,如果我正确地阅读它,它似乎需要三个任意选择的行。

答案 3 :(得分:0)

您可以使用:

select  top 3 * from [Table_Name] where id='1' or id='2'