【问题标题】:Is there a way to get 2 rows from each group of rows? [duplicate]有没有办法从每组行中获取 2 行? [复制]
【发布时间】:2013-01-04 01:30:52
【问题描述】:

可能重复:
How do I select a fixed number of rows for each group?

例如...如果我有这张表(按颜色排序):

--------------
| id | color |
--------------
| 95 | red   |
| 7  | red   |
| 44 | red   |
| 46 | red   |
| 49 | red   |
| 24 | green |
| 37 | green |
| 91 | green |
| 88 | green |
| 44 | blue  |
| 10 | blue  |
| 11 | blue  |
--------------

有没有办法让我从每种颜色中获取 2 行?示例:

--------------
| id | color |
--------------
| 7  | red   |
| 44 | red   |
| 24 | green |
| 37 | green |
| 10 | blue  |
| 11 | blue  |
--------------

【问题讨论】:

  • 这并不重要。 id 最低的 2 就可以了。

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


【解决方案1】:

你可以有这样的东西,

SELECT id, color
FROM   TableName a
WHERE 
(
   SELECT COUNT(*) 
   FROM   TableName AS f
   WHERE  f.color = a.color AND f.id <= a.id
) <= 2;

【讨论】:

    猜你喜欢
    • 2014-02-21
    • 1970-01-01
    • 2019-12-16
    • 2017-03-25
    • 1970-01-01
    • 2022-10-14
    • 1970-01-01
    • 2011-10-20
    • 1970-01-01
    相关资源
    最近更新 更多