你能帮助我吗,我期待输出是,
select * from table order by value
输出:
Value
E1
E2
O
R
必填项:
R
E1
E2
O
答案 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