如何使用order by得到输出?

时间:2014-03-22 03:58:15

标签: sql sql-server tsql sql-order-by

你能帮助我吗,我期待输出是,

select * from table order by value

输出:

Value
E1
E2
O
R

必填项:

R
E1
E2
O

3 个答案:

答案 0 :(得分:1)

试试这个

 SELECT * FROM yourTable
 ORDER BY CASE WHEN VALUE = 'R' Then 1 Else 0 End,Value ASC

如果您使用的是UNION,请尝试使用

SELECT * FROM
(
  SELECT * 
    FROM table1
   UNION ALL
  SELECT *
    FROM table2
) T
ORDER BY CASE WHEN VALUE = 'R' Then 1 Else 0 End,Value ASC

答案 1 :(得分:0)

有点黑客但如果这就是你想要的......

order by 
case when value='r' then 1
    when value='e1' then 2
    when value='e2' then 3
    when value='o' then 4 end

答案 2 :(得分:0)

尝试

SELECT * 
  FROM table1
 ORDER BY CASE 
            WHEN value = 'R'     THEN 0
            WHEN value LIKE 'E%' THEN 1
            WHEN value = 'O'     THEN 2 
          END, LEN(value), value

输出:

| VALUE |
|-------|
|     R |
|    E1 |
|    E2 |
|     O |

这是 SQLFiddle 演示


  

...如果我使用union all运算符合并两个表,则显示错误...

使用UNION即可

SELECT *
  FROM
(
  SELECT * 
    FROM table1
   UNION ALL
  SELECT *
    FROM table2
) q
 ORDER BY CASE 
            WHEN value = 'R'     THEN 0
            WHEN value LIKE 'E%' THEN 1
            WHEN value = 'O'     THEN 2 
          END, LEN(value), value