我的数据库中有一个列名'Code',它包含不同的数字..
Product | Code
===============================
p1 | 0
p2 | 120
p3 | 0
p4 | 222
p5 | 1
p6 | 1
p7 | 180
p18 | 300
我想按照Code排序表。首先是代码为“1”的产品,然后是ASC订单中的所有数字,最后显示代码为“0”的产品。喜欢这个
Product | Code
===============================
p5 | 1
p6 | 1
p2 | 120
p7 | 180
p4 | 222
p18 | 300
p3 | 0
p1 | 0
SQL查询的任何帮助谢谢?
答案 0 :(得分:1)
你可以用UNION ALL的技巧来做到这一点:
SELECT Product,Code FROM (
SELECT Product,Code,0 AS ORD FROM Table1 WHERE code != 0
UNION ALL
SELECT Product,Code,1 FROM Table1 WHERE code=0
) a
ORDER BY ORD,CODE
这将首先给你!= 0,按代码排序,然后是= 0。
答案 1 :(得分:1)
首先对Code = 0
进行排序(按升序排列,默认值为false,0为真/ 1之前);然后按Code
本身的值排序:
SELECT * FROM my_table ORDER BY Code = 0, Code
在sqlfiddle上查看。
答案 2 :(得分:0)
SELECT product,code FROM table ORDER BY CASE WHEN Code=0 THEN (SELECT max(Code)+1 FROM table) ELSE Code END ASC;