当前位置:  开发笔记 > 后端 > 正文

SQL Server使用IN()选择查询并按顺序排序

如何解决《SQLServer使用IN()选择查询并按顺序排序》经验,为你挑选了1个好方法。

我需要一个SELECT带有IN子句的查询,以及Order by:

select * 
from table 
where column_id IN (5,64,2,8,7,1) 

此代码返回1, 2, 5, 7, 8, 64.

现在我需要按顺序返回相同的选择

输出需要是: 5, 64, 2, 8, 7, 1

在Mysql中,有字段选项,但SQL Server没有这样的字段选项.



1> Ullas..:

使用您要在a中搜索的值Table Valued Constructor并提供行号,然后将其与表连接,然后根据表值构造函数中的值对其进行排序.

询问

SELECT t1.* 
FROM(VALUES(1, 5), (2, 64), (3, 2), (4, 8), (5, 7), (6, 1)) t2([rn], [id])
JOIN [your_table_name] t1
ON t1.[id] = t2.[id]
ORDER BY t2.[rn];

您还可以使用要搜索的值创建表变量,并在其中创建标识列.然后加入你的桌子吧.

询问

DECLARE @tbl AS TABLE([rn] INT IDENTITY(1, 1), [id] INT);
INSERT INTO @tbl([id]) VALUES(5), (64), (2), (8), (7), (1);

SELECT t1.*
FROM [your_table_name] t1
JOIN @tbl t2
ON t1.[id] = t2.[id]
ORDER BY t2.[rn];

推荐阅读
贾志军
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有