有表: mytable(i int,c char(50))
查询:select * from mytable where i IN(1,3,5,2,4,6)
希望其结果集的顺序也是按i,1,3,5,2,4,6排列,
是否有SQL查询语句可以直接搞定?
查询:select * from mytable where i IN(1,3,5,2,4,6)
希望其结果集的顺序也是按i,1,3,5,2,4,6排列,
是否有SQL查询语句可以直接搞定?
解决方案 »
- 麻烦谁给你举几个数据库中使用xp_cmdshell的例子!
- SET 选项的设置不正确,请问该怎么设置
- sql数据库中的mdf文件图标如何恢复
- T-SQL中存储过程输出参数的默认值有何用?
- SQL 关联更新
- =========存储过程返回的问题==========
- 为什么我在本本上就可以使用该命令备份数据库,而在Server上就不可以呢???
- 关于仓库入库影响库存的问题?(触发器)
- 关于表字段的加密问题?
- 在主域服务器中安装Sqlserver2000,在备份域服务器中也安装了sqlserver2000,如何保持这两个sqlserver2000中的数据同步?
- 急~~关于database backup和restore
- 【求助】@@identity值冲突
select row_number() over(partition by getdate() order by getdate()) aid,*
from tb where id in (2,4,3,5) order by aid--SQL 2005的写法。
CREATE TABLE #temp(i int NOT NULL UNIQUE, seq int IDENTITY(1,1) NOT NULL PRIMARY KEY CLUSTERED)
INSERT INTO #temp
SELECT 1 UNION ALL
SELECT 3 UNION ALL
SELECT 5 UNION ALL
SELECT 2 UNION ALL
SELECT 4 UNION ALL
SELECT 6
SELECT tb.*
FROM mytable tb
INNER JOIN #temp tmp
ON tb.i = tmp.i
ORDER BY tmp.seq
select * from mytable where i IN(1,3,4,5,2,6) order by i{1,3,4,5,2,6}
FROM dbo.Nums tb
INNER JOIN dbo.Split('1,3,5,2,4,6',',') l
ON tb.n = l.v
ORDER BY l.i
前提是需要先定义一个表值函数:CREATE FUNCTION dbo.Split(
@string nvarchar(max),
@separator nvarchar(10) = N','
)
RETURNS TABLE
RETURN
SELECT
i = ROW_NUMBER() OVER(ORDER BY (SELECT 1)),
v = x.n.value('.','nvarchar(50)')
FROM (
SELECT ValuesXML = CAST('<root>' +
REPLACE((SELECT v = @string FOR XML PATH('')),@separator,'</v><v>') +
'</root>' AS XML)
) t
CROSS APPLY t.ValuesXML.nodes('/root/v') x(n)