我有一个包含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
的行没有的行。
有没有办法通过我正在寻找的东西取得成功?
答案 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