SQL Server:子查询问题900
我使用的是Sql Server Management Studio 2016,我有一个返回少于10个结果的查询,问题是我需要按特定文本字段对结果排序,但所需的顺序不是字母顺序。如果可能的结果是abc、cde、ghf等,我想先选择cde,忽略其他结果,如果没有,则选择ghf,如果没有,则选择abc。因为这是一个子查询,所以我总是从较高级别的select中获得相同数量的结果,但只需要满足列表中第一个值的结果,而忽略所有其他结果。任何想法都将不胜感激。谢谢您可以使用的一种方法是加入:SQL Server:子查询问题900,sql,subquery,sql-server-2016,Sql,Subquery,Sql Server 2016,我使用的是Sql Server Management Studio 2016,我有一个返回少于10个结果的查询,问题是我需要按特定文本字段对结果排序,但所需的顺序不是字母顺序。如果可能的结果是abc、cde、ghf等,我想先选择cde,忽略其他结果,如果没有,则选择ghf,如果没有,则选择abc。因为这是一个子查询,所以我总是从较高级别的select中获得相同数量的结果,但只需要满足列表中第一个值的结果,而忽略所有其他结果。任何想法都将不胜感激。谢谢您可以使用的一种方法是加入: select t
select top 1 q.*
from (<your query here>) q left join
(values ('abc', 1), ('def', 2), . . .
) v(val, ordering)
on q.col = v.val
order by v.ordering;
选择前1个问题*
from()q左连接
(值('abc',1),('def',2)。
)v(val,订购)
关于q.col=v.val
通过v.订购;
另一种方法更简单
select top 1 q.*
from (<your query here>) q
order by charindex('[' + col + ']', '[abc],[def],...')
选择前1个问题*
from()q
按charindex(“[”+列+“]”、“[abc]、[def]、…”排序)
另一个选项是,您可以使用大小写
表达式根据要分配自定义排序的列返回值:
select *
from t
order by
case col
when 'cde' then 0
when 'ghf' then 1
when 'abc' then 2
else 3
end
这个问题不是特别清楚。您想根据您定义的一组有限的可能值进行排序吗?能否显示您的表结构和一些代码?