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')