mysql - 不能 UNION ALL 两个等价的查询吗?

标签 mysql sql union-all

我有一个工作查询需要重复几次,但是我在 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;

SQL FIDDLE

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;
)

SQL FIDDLE

(UNIONed 查询只是用于测试目的的原始查询的副本)

最佳答案

你有一些额外的括号。

查看此 SQL Fiddle

关于mysql - 不能 UNION ALL 两个等价的查询吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12115856/

相关文章:

sql - 识别何时在 SQL 查询或 PL/SQL 过程中执行函数

mysql - 为什么外部排序依据不能正常工作?

php - 如何将动态值存入数据库

php - 下拉菜单选择未发送到数据库?改为插入空值

MySQL 选择计数

SQL 聚合函数失败

mysql - 以下代码中变量 last_updated 的默认值无效

mysql - 如何将秒/分钟放在查询上?

Mysql UNION ALL 创建双记录

sql - 当列的顺序不同时创建 UNION ALL 查询