如何在SQL查询中添加不同的条件语句

时间:2013-10-26 23:32:54

标签: mysql

我的数据库中有一个列名'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查询的任何帮助谢谢?

3 个答案:

答案 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。

sqlfiddle demo

答案 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;