从包含2种选择的表中选择n行

时间:2014-03-15 04:29:01

标签: php mysql mysqli

我有以下表结构:

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

从这张表中我想找回2个男性角色名称和1个女性角色名称。我想知道是否存在可以满足需要的单个查询,而不是编写将会严重轮询数据库的2个单独查询。所以我的结果JSON应包含2m1f记录。

提前致谢

1 个答案:

答案 0 :(得分:1)

我读了他的评论,你希望得到一个部门中排名靠前的人,所以你可能会有一个gade领域

数据:

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

在查询中使用union:

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