sql - ORDER BY 在逗号分隔列表中使用 SELECT 子句

标签 sql sql-server sql-order-by csv

我使用以下代码创建逗号分隔列表。

我想要列表的特定顺序:

USE AdventureWorks
GO
DECLARE @listStr VARCHAR(MAX)
SELECT @listStr = COALESCE(@listStr+',' ,'') + Name
FROM Production.Product
SELECT @listStr
GO

当我试过的时候

USE AdventureWorks
GO
DECLARE @listStr VARCHAR(MAX)
SELECT @listStr = COALESCE(@listStr+',' ,'') + Name
FROM Production.Product
ORDER BY sortOrder
SELECT @listStr
GO

它显示错误 'ORDER' 附近的语法不正确

最佳答案

使用STUFF () 这给你相同的逗号分隔结果

USE AdventureWorks
GO
DECLARE @listStr VARCHAR(MAX)

SELECT @listStr = STUFF((SELECT  ',' + Name
            FROM Production.Product
            ORDER BY sortOrder
       FOR XML PATH('')), 1, 1, '')

SELECT @listStr
GO

关于sql - ORDER BY 在逗号分隔列表中使用 SELECT 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17834842/

相关文章:

sql - 在同一个查询中获取计数和行数

sql - 来自三个表的一个更新 SQL 查询

sql-server - SELECT * FROM (VALUES (x,y)) AS TableLiteral(Col1, Col2) 的名称

sql - SQL:按电子邮件域名排序

mysql - 不能在 mysql 函数中使用别名作为 ORDER BY 子句的一部分

mysql - 最好选择最大的地方

javascript - 从对象中检索数据在 Ionic 中不起作用

sql - 当您设置存储过程级别时, View 的隔离级别是多少?

c# - 在 sql 命令中将字符串作为日期时间参数传递

php - 按不按日期顺序返回结果进行分组