SQL Server查询结果排序的问题。
我就不写完整语句了,看得懂就行了。wherenamein('123','12','856','475')这样查出来的结果他自动给我排序了,变成这样12123475856我...
我就不写完整语句了,看得懂就行了。
where name in ('123','12','856','475')
这样查出来的结果他自动给我排序了,变成这样
12
123
475
856
我想要按输入的顺序排序怎么实现,要这样的。
123
12
856
475 展开
where name in ('123','12','856','475')
这样查出来的结果他自动给我排序了,变成这样
12
123
475
856
我想要按输入的顺序排序怎么实现,要这样的。
123
12
856
475 展开
3个回答
展开全部
如果要根据输入的顺序输出结果,应当先将输入结果排序,改用inner join 代替 in子句。
假设表名为A
with cte_input
as(
select '123' as name, 1 as seq -- 序号
union
select '12' , 2
union
select '856',3
union
select '475', 4
)
select A.* from A left join cte_input as B
on A.name = B.name
order by B.seq -- 按输入顺序输出结果。
假设表名为A
with cte_input
as(
select '123' as name, 1 as seq -- 序号
union
select '12' , 2
union
select '856',3
union
select '475', 4
)
select A.* from A left join cte_input as B
on A.name = B.name
order by B.seq -- 按输入顺序输出结果。
追问
问题是,实际情况不止这四个数据啊,300多个呢,要这么排序的话那不得手动输入300多次啊....
追答
你可以用identity(1,1) 函数,将输入的结果集插入到一个临时表,然后用临时表做内连接。
主要是给思路,具体实现可以灵活运用。
还可以在应用程序端,接受用户输入时就设好序号。
展开全部
对该表增加一个字段 orderid 然后手动修改其对应的值 然后根据要求进行排序就ok了
更多追问追答
追问
详细点行不? 看不懂啊
追答
比如表t_a有id和name两个字段 现在手动加一个字段orderid 然后你对你想要排列在前面的name的orderid进行修改 最后只要order by orderid 就好了 。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果是自动排序的话可能是因为这个查询基于索引扫描,把索引删掉试试
更多追问追答
追问
怎么删?
追答
你在这个表上建过索引吗?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询