首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SQL搜索结果按搜索内容的顺序排列

SQL搜索结果按搜索内容的顺序排列
EN

Stack Overflow用户
提问于 2016-05-11 19:31:45
回答 4查看 37关注 0票数 0

我想让服务器按照我发送的顺序给我查询的结果。

所以如果我写:

代码语言:javascript
运行
复制
SELECT * FROM table WHERE column in (9,1,8)

我希望它按如下顺序给我结果: 9,1,8

EN

回答 4

Stack Overflow用户

发布于 2016-05-11 19:36:49

一种方法是使用left join

代码语言:javascript
运行
复制
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

代码语言:javascript
运行
复制
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);

同样,这可以在一些数据库中简化,比如通过使用特殊函数。

票数 0
EN

Stack Overflow用户

发布于 2016-05-11 19:38:08

您可以按所需的顺序使用CASE表达式,如下所示:

代码语言:javascript
运行
复制
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
票数 0
EN

Stack Overflow用户

发布于 2016-05-11 19:44:18

如果具有以下条件,则可以在Oracle SQL中执行此操作

代码语言:javascript
运行
复制
SELECT Column_name
FROM user_tab_columns
where table_name = 'MY_TABLE'
and Column_id in (9,1,8)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37161347

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档