UNION两个命令MySQL语句

时间:2014-03-06 16:59:30

标签: mysql

我有一个包含3列(id,name,code)和10行的表。某些行没有代码,因此某些列的列为空。 我要完成的是选择code列的行不是第一个按最后一次排序排序的行,然后是排序最后一行的code列空行的所有行。 我试过了

(SELECT * from tablename WHERE code <> '' ORDER BY ID DESC) UNION
(SELECT * from tablename WHERE code = '' ORDER BY ID DESC)

UNION有效,但订单却没有。我在这里已经阅读了其他问题,并发现添加ORDER BY就像我添加的那样无法工作,我应该在最后添加它,但这不会帮助我实现我想要的并且将混合具有code的行没有的行。

有没有办法通过我正在寻找的东西取得成功?

2 个答案:

答案 0 :(得分:2)

我认为您只需要将排序逻辑放在ORDER BY子句

SELECT id, name, code
FROM tablename
ORDER BY code = '', ID desc;

答案 1 :(得分:0)

试试这个:

SELECT * FROM
(
(SELECT * from tablename WHERE code <> '' ORDER BY ID DESC) 
 UNION
(SELECT * from tablename WHERE code = '' ORDER BY ID DESC)
)tab ORDER BY ID DESC;

或者

SELECT * from tablename ORDER BY code DESC,ID DESC

根据您希望显示的内容更改ASC / DESC