从具有2种类型选项的表中选择n行


Select n rows from a table that has 2 types of choices

我有以下表格结构:

+----+--------+------+
| id | gender | name |
+----+--------+------+
| 00 |   m    |   A  |
| 01 |   f    |   B  |
| 02 |   m    |   C  |
| 03 |   m    |   D  |
+----+--------+------+

我想从这个表中检索2个男性性别名称和1个女性性别名称。而不是编写2个单独的查询,将轮询数据库糟糕,我想知道是否有一个单一的查询,可以做必要的。因此,生成的JSON将包含2m1f条记录。

Thanks in advance

我读了这个评论,你想在一个部门得到排名最高的人,所以你可能会有一个等级字段

数据:

id   gender name  grade
---- ------ ----- -----
00   m      Jon   A
01   f      Lin   B
02   m      Kim   C
00   m      Ran   D

在查询中使用联合:

select Top 2 id,Name, gender, grade from @temp where gender = 'm' and grade in ('A','B') --Male
union 
select Top 1 id,Name, gender, grade from @temp where gender = 'f' and grade in ('A','B') --female

注意:您可以在存储过程中更动态地更改最大行值。

结果:

id   Name  gender grade
---- ----- ------ -----
00   Jon   m      A
01   Lin   f      B