我有以下表结构:
+----+--------+------+
| id | gender | name |
+----+--------+------+
| 00 | m | A |
| 01 | f | B |
| 02 | m | C |
| 03 | m | D |
+----+--------+------+
从这张表中我想找回2个男性角色名称和1个女性角色名称。我想知道是否存在可以满足需要的单个查询,而不是编写将会严重轮询数据库的2个单独查询。所以我的结果JSON应包含2m1f记录。
提前致谢
答案 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