mysql - 如何对 UNION 的结果进行排序

标签 mysql sql union

我有一个这样的查询:

(select @number:=3) 
  union 
(select @number:=2) 
  union 
(select @number:=1) 
order by @number ASC

结果:

3
2
1

但我希望结果按升序排列,如下所示:

1
2
3

如何使用这样的查询以升序排列结果?

最佳答案

您可以将 UNION 包装在子查询中,试试这个:

SELECT *
FROM(
   SELECT @number := 3 AS number
   UNION
   SELECT @number := 2 AS number
   UNION
   SELECT @number := 1 AS number) tmp
ORDER BY number;

这是一个SQL Fiddle示例。

<小时/>

编辑,解释正在发生的事情:

在您的示例中,MySQL 将每个组视为其自己的查询(这就是您期望联合工作的方式),因此就好像您有三个不同的查询,并且只有第三个查询被排序。

因此,通过将联合查询放在一起,您将获得一个结果集,并且整个结果集就是所排序的内容。

关于mysql - 如何对 UNION 的结果进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30464519/

相关文章:

mysql - 错误 : Lock wait timeout exceeded; try restarting transaction/Limit Delete Query with join

MySQL select - 按组获取计数

sql - 从此 sql server 文章翻页的有效方法

sql - 如何使用我传递的参数使存储过程返回 "dataset"?

sql - 在 MySql 中对 UNION 结果求和的简单方法

php - 如何找到两个表中的哪一个在已知列中具有给定值的行

php - 三表内部连接与空表进行搜索

mysql - 安装 Koha 时出错

sql - 如果 id = 0,则返回父表中的所有记录

php - 将数据移动到新的 MySQL