【问题标题】:Select distinct from temp table从临时表中选择不同
【发布时间】:2017-12-02 12:35:13
【问题描述】:

我正在尝试从我的临时表列中选择不同的值到 sql server 中的 varchar 变量中。

我试过了,但它不起作用。

DECLARE @GuidPrimaryTableSpace NVARCHAR(MAX);

SET @GuidPrimaryTableSpace = '';

SELECT DISTINCT
       @GuidPrimaryTableSpace = @GuidPrimaryTableSpace+DeleteGuidStatement+';'+CHAR(13)+CHAR(10)
FROM ##Purge_GuidForeignKeyTablePurgeStatements;

请帮忙!

【问题讨论】:

    标签: sql sql-server-2008


    【解决方案1】:

    我建议使用 XML 方法进行字符串连接:

    SELECT @GuidPrimaryTableSpace =
               STUFF((SELECT DISTINCT ';' + CHAR(13) + CHAR(10) + DeleteGuidStatement
                      FROM ##Purge_GuidForeignKeyTablePurgeStatements
                      FOR XML PATH (''), TYPE
                     ).value('.', 'NVARCHAR(MAX)'
                            ), 1, 3, ''
                    )
    FROM ##Purge_GuidForeignKeyTablePurgeStatements;
    

    如果你使用子查询,你可以使用你的方法:

    DECLARE @GuidPrimaryTableSpace NVARCHAR(MAX);
    
    SET @GuidPrimaryTableSpace = '';
    
    SELECT @GuidPrimaryTableSpace = @GuidPrimaryTableSpace + DeleteGuidStatement + ';' + CHAR(13) + CHAR(10)
    FROM (SELECT DISTINCT DeleteGuidStatement
          FROM ##Purge_GuidForeignKeyTablePurgeStatements
         ) t;
    

    【讨论】:

    • 非常感谢戈登。它工作正常,但这里还有另一个问题。它不允许我按 ID 订购。
    • SELECT DISTINCT DeleteGuidStatement FROM ##Purge_GuidForeignKeyTablePurgeStatements 按 ID 排序会引发错误,因为“ORDER BY 子句在视图、内联函数、派生表、子查询和公用表表达式中无效,除非 TOP 或 FOR XML也被指定了。”
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-09
    • 1970-01-01
    相关资源
    最近更新 更多