在 MySQL 中如何为每个组选择前 2 行?

要从每个组中选择前 2 行,请在子查询中使用 where 条件。让我们创建一个表。创建表的查询如下:

mysql> create table selectTop2FromEachGroup

   -> (

   -> Name varchar(20),

   -> TotalScores int

   -> );

现在使用插入命令在表中插入一些记录。查询如下:

mysql> insert into selectTop2FromEachGroup values('John',32);

mysql> insert into selectTop2FromEachGroup values('John',33);

mysql> insert into selectTop2FromEachGroup values('John',34);

mysql> insert into selectTop2FromEachGroup values('Carol',35);

mysql> insert into selectTop2FromEachGroup values('Carol',36);

mysql> insert into selectTop2FromEachGroup values('Carol',37);

使用 select 语句显示表中的所有记录。查询如下:

mysql> select *from selectTop2FromEachGroup;

以下是输出:

+-------+-------------+

| Name  | TotalScores |

+-------+-------------+

| John  |          32 |

| John  |          33 |

| John  |          34 |

| Carol |          35 |

| Carol |          36 |

| Carol |          37 |

+-------+-------------+

6 rows in set (0.00 sec)

这是使用 where 条件和子查询从每个组中选择前 2 行的查询:

mysql> select *from selectTop2FromEachGroup tbl

   -> where

   -> (

   ->    SELECT COUNT(*)

   ->    FROM selectTop2FromEachGroup tbl1

   ->    WHERE tbl1.Name =tbl.NameAND

   ->    tbl1.TotalScores >= tbl.TotalScores

   -> ) <= 2 ;

以下是输出:

+-------+-------------+

| Name  | TotalScores |

+-------+-------------+

| John  |          33 |

| John  |          34 |

| Carol |          36 |

| Carol |          37 |

+-------+-------------+

4 rows in set (0.06 sec)

以上是 在 MySQL 中如何为每个组选择前 2 行? 的全部内容, 来源链接: utcz.com/z/357403.html

回到顶部