Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 使用(..)SQL server中的值排序选择_Sql Server_Database - Fatal编程技术网

Sql server 使用(..)SQL server中的值排序选择

Sql server 使用(..)SQL server中的值排序选择,sql-server,database,Sql Server,Database,有没有办法对结果进行排序(例如) 而不是把它们当作 id age Location 1 2 DC 2 2 NY 4 2 MI 6 2 TE 结果应按in('NY','DC','MI','TE')的顺序排列: 我认为有一个临时表并将('NY','DC','MI','TE')插入该表是可能的。然后使用左联接将按需要对其进行排序 有更好的解决办法吗 请注意。在MySQL中,这可以通过使用F

有没有办法对结果进行排序(例如)

而不是把它们当作

id     age     Location
1       2       DC
2       2       NY
4       2       MI
6       2       TE
结果应按in('NY','DC','MI','TE')的顺序排列:

我认为有一个临时表并将
('NY','DC','MI','TE')
插入该表是可能的。然后使用左联接将按需要对其进行排序

有更好的解决办法吗


请注意。

在MySQL中,这可以通过使用
FIND_In_SET
来完成,它返回第一个参数在第二个参数中出现的索引,后者是一个包含逗号分隔值的字符串

我认为同样的事情也可以使用
CHARINDEX
-试试看:

SELECT id, age, location
FROM student 
WHERE location IN ('NY','DC','MI','TE')
ORDER BY CHARINDEX (location, 'NY,DC,MI,TE')

任何解决方案都大致相当于使用临时表。您可以使用CTE或子查询,但实际上您使用的是不同的语法来执行相同的操作。

如果不必从表中选择城市代码,请尝试以下操作:

ORDER BY FIELD(Location,'NY','DC','MI','TE')
ORDER BY FIND_IN_SET(Location,'NY,DC,MI,TE')
ORDER BY LOCATE(CONCAT(',',Location,','),',NY,DC,MI,TE,')
ORDER BY Location IN ('NY','DC','MI','TE')
中的
也可以接受子查询(
在选择城市中按位置排序\u code FROM…

SELECT id, age, location
FROM student 
WHERE location IN ('NY','DC','MI','TE')
ORDER BY CHARINDEX (location, 'NY,DC,MI,TE')
ORDER BY FIELD(Location,'NY','DC','MI','TE')
ORDER BY FIND_IN_SET(Location,'NY,DC,MI,TE')
ORDER BY LOCATE(CONCAT(',',Location,','),',NY,DC,MI,TE,')
ORDER BY Location IN ('NY','DC','MI','TE')