SQL查询含有2的结果集

问题描述:

select name from persons where gender = 'male' order by name limit 10SQL查询含有2的结果集

select name from persons where gender = 'female' order by name limit 10

我怎样才能获得前10名男性和第10位女性中的一个结果集(20项),与单个SQL查询电话?这可能吗?

正确的语法使用括号和union all

(select name 
from persons 
where gender = 'male' 
order by name 
limit 10 
) union all 
(select name 
from persons 
where gender = 'female' 
order by name 
limit 10 
) 

这是可能的,这就是所谓的UNION

+0

这并不提供答案的问题。要批评或要求作者澄清,请在其帖子下方留言。 – 2015-03-31 16:42:11

+0

是的,这意味着正在阅读的人有一些大脑,不适用于“复制和粘贴软件”LTD – 2015-03-31 16:44:20

可以使用UNION操作。

UNION用于将结果从多个SELECT语句 组合成单个结果集。

select name from persons where gender = 'male' order by name limit 10 
UNION 
select name from persons where gender = 'female' order by name limit 10 

SELECT name FROM persons WHERE gender = 'male' ORDER BY name LIMIT 0,10 ; 
    UNION 
SELECT name FROM persons WHERE gender = 'female' ORDER BY name LIMIT 0,10 ; 

与ROW_NUMBER()

SELECT * FROM (
SELECT ROW_NUMBER() OVER (PARTITION BY gender ORDER BY gender) row_no,* FROM Person 
) A WHERE A.row_no <= 10