有没有办法从每组行中获取 2 行? [复制]

Posted

技术标签:

【中文标题】有没有办法从每组行中获取 2 行? [复制]【英文标题】:Is there a way to get 2 rows from each group of rows? [duplicate] 【发布时间】: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 就可以了。 【参考方案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;
SQLFiddle Demo

【讨论】:

以上是关于有没有办法从每组行中获取 2 行? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

Oracle - 从一组行中获取最小和最大日期

SQL:如何为一列中具有重复值的每组行选择一行?

Hive - 如何获取每组值的分位数

如何确定一个值是不是在使用 Dplyr 的一组行中出现最多? [复制]

如何从每组中获得前 1 行? (T-SQL)

如何遍历 .dat 文件并将每组行的特定列附加到数组