UNION和ORDER BY的结果很奇怪

时间:2011-12-13 15:20:19

标签: mysql union

我有这个查询(简化):

SELECT score FROM tbl WHERE id = xx ORDER BY score DESC;

它运作正常。现在,我向此查询添加UNION,如下所示:

(SELECT score FROM tbl WHERE id = x ORDER BY score DESC)
   UNION
(SELECT score FROM tbl WHERE id = y)

现在第一个查询的所有第一个结果集都搞砸了,不尊重ORDER BY score DESC

3 个答案:

答案 0 :(得分:4)

SELECT score FROM tbl WHERE id = x    联盟 SELECT score FROM tbl WHERE id = y

ORDER BY得分DESC;

只需将订单添加到最后。它将适用于整个结果集。如果要区分结果,请添加订单col,如下所示:

选择1作为order_col,得分FROM tbl WHERE id = x    联盟 SELECT 2为order_col,得分FROM tbl WHERE id = y

ORDER BY order_col,得分DESC;

答案 1 :(得分:1)

在联合查询中,order by必须与最后一次选择一起放置。

答案 2 :(得分:0)

好的,我找到了解决方案。

不允许使用UNION和ORDER BY。我只能在UNION结尾处放置ORDER BY