我想让服务器按照我发送的顺序给我查询的结果。
所以如果我写:
SELECT * FROM table WHERE column in (9,1,8)我希望它按如下顺序给我结果: 9,1,8
发布于 2016-05-11 19:36:49
一种方法是使用left join
select t.*
from (select 9 as c, 1 as priority union all select 1, 2 union all select 8, 3
) vals left join
table t
on t.column = vals.c
order by vals.priority;注意:这是通用语法。子查询的特定语法可能因数据库而异。
另一种方法是在order by中使用case
select t.*
from table t
where t.column in (9, 1, 8)
order by (case column when 9 then 1 when 1 then 2 when 8 then 3 end);同样,这可以在一些数据库中简化,比如通过使用特殊函数。
发布于 2016-05-11 19:38:08
您可以按所需的顺序使用CASE表达式,如下所示:
select *
from table_name
where column_name in (9,1,8)
order by case column_name
when 9 then 1
when 1 then 2
when 8 then 3 end
, column_name -- optional, but here could go another column if you want to have custom order发布于 2016-05-11 19:44:18
如果具有以下条件,则可以在Oracle SQL中执行此操作
SELECT Column_name
FROM user_tab_columns
where table_name = 'MY_TABLE'
and Column_id in (9,1,8)https://stackoverflow.com/questions/37161347
复制相似问题