SQL将ID连接成特定顺序

SQL将ID连接成特定顺序,sql,sql-server,database,Sql,Sql Server,Database,我有一个很好的查询,它把我所有的ID放在一个逗号分隔的列表中 DECLARE @tmp nvarchar(max) SET @tmp = '' SELECT @tmp = @tmp + cast(id as nvarchar(max)) + ', ' FROM dbo.property 我想把我的ID按字母顺序排列,但当我按p.Name添加顺序时,它只会给我最上面的一个结果 我如何调整我的查询来实现这一点?这真的不行吗 DECLARE @tmp nva

我有一个很好的查询,它把我所有的ID放在一个逗号分隔的列表中

DECLARE @tmp nvarchar(max)
SET @tmp = ''
        SELECT  @tmp = @tmp + cast(id as nvarchar(max)) + ', ' 
        FROM    dbo.property
我想把我的ID按字母顺序排列,但当我按p.Name添加顺序时,它只会给我最上面的一个结果


我如何调整我的查询来实现这一点?

这真的不行吗

DECLARE @tmp nvarchar(max);
SET @tmp = '';
SELECT  @tmp = @tmp + cast(id as nvarchar(max)) + ', ' 
FROM    dbo.property p
order by p.name;
在任何情况下,您都可以使用以下方法:

select @tmp = stuff((select ', ', cast(id as nvarchar(max))
                     from db.property p
                     order by p.name
                     for xml path ('')
                    ), 1, 2, '');
解决方案:

    SELECT  (cast(ID as nvarchar(max)) + ', ')  AS [text()]
      FROM    dbo.property
  ORDER BY ID
    FOR XML PATH ('')

. . 我添加了sql server标记,因为您似乎正在使用sql server语法。请参阅此链接可能会帮助您我的原始查询中有一个where子句,我删除了该子句以简化我的问题。如果没有where条款,它可以正常工作