我有一个这样的查询:
(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/