我有一个工作查询需要重复几次,但是我在 UNION ALL 上遇到语法错误:
工作查询:
set @num := 0, @group := '';
select person, `group`, age
from
(
select person, `group`, age,
@num := if(@group = `group`, @num + 1, 1) as row_number,
@group := `group` as dummy
from mytable
order by `Group`, Age desc
) as x where x.row_number <= 2;
UNION ALL 失败(出现语法错误):
set @num := 0, @group := '';
(
select person, `group`, age
from
(
select person, `group`, age,
@num := if(@group = `group`, @num + 1, 1) as row_number,
@group := `group` as dummy
from mytable
order by `Group`, Age desc
) as x where x.row_number <= 2;
)
UNION ALL
(
select person, `group`, age
from
(
select person, `group`, age,
@num := if(@group = `group`, @num + 1, 1) as row_number,
@group := `group` as dummy
from mytable
order by `Group`, Age desc
) as x where x.row_number <= 2;
)
(UNIONed 查询只是用于测试目的的原始查询的副本)
最佳答案
你有一些额外的括号。
查看此 SQL Fiddle
关于mysql - 不能 UNION ALL 两个等价的查询吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12115856/