2011-12-13 42 views
3

怪异的结果我有这个疑问(简体):与UNION和ORDER BY

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

回答

4

SELECT得分FROM TBL WHERE ID = X UNION SELECT得分FROM TBL WHERE ID = Y

ORDER BY得分DESC;

只需将订单添加到最后。它将应用于整个结果集。如果您想区分的结果添加订单山坳,像这样:

选择1为order_col,分数FROM TBL WHERE ID = X UNION 选择2为order_col,分数FROM TBL WHERE ID = Y

ORDER BY order_col,得分DESC;

+0

该解决方案的问题是,我可以重复行,因为他们可以有不同的分数字段..我该如何解决这个问题?也许最后一个组ID? – dynamic

0

好,我找到了解决办法。

UNION和ORDER BY是不允许的。我只能将ORDER BY放在UNION的末尾

1

在联合查询中,必须将order by放在最后一个select中。