sql - 为什么这个 T-SQL 会重复结果

标签 sql sql-server t-sql

为什么这个 T-SQL 会重复结果?

这个查询相当通用,因此应该可以在任何数据库中复制。

我在 TextLine 列中看到重复的 USP...

SELECT DISTINCT b.name as TableName,  
        STUFF((
             SELECT ', ' + OBJECT_NAME(a.object_id)
             FROM sys.sql_dependencies a 
             WHERE a.referenced_major_id = b.object_id
             ORDER BY 1
             For XML PATH ('')
            ), 1, 1, '') AS [TextLine]
FROM sys.sql_dependencies a JOIN sys.tables b ON a.referenced_major_id = b.object_id
ORDER BY 1 ASC

最佳答案

DISTINCT添加到子查询

SELECT DISTINCT b.name                               AS TableName,
                Stuff((SELECT DISTINCT ', ' + Object_name(a.object_id) --Here
                       FROM   sys.sql_dependencies a
                       WHERE  a.referenced_major_id = b.object_id
                       ORDER  BY 1
                       FOR XML PATH ('')), 1, 1, '') AS [TextLine]
FROM   sys.sql_dependencies a
       JOIN sys.tables b
         ON a.referenced_major_id = b.object_id
ORDER  BY TableName ASC 

现在,对于每个,只有不同依赖的对象将被连接

关于sql - 为什么这个 T-SQL 会重复结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40084437/

相关文章:

sql - PL/SQL 神秘箭头运算符

c# - 与当前连接关联的事务已完成但尚未处理。 (编辑#3)

sql-server - 在 SQL 中使用变量并在 SQL Server Management Studio 中保持格式设置

t-sql - TSQL除法时小数精度问题

mysql - 如果另一列满足特定条件,如何更新列?

MySQL - 如果 x 不为空,则连接表

sql-server - Visual Studio Online 中的数据库集成测试

sql-server - Entity Framework 创建表没有 "database create"权限?

sql - 为什么我的 T-SQL 游标执行两次?

sql - Postgres : row with comma separated value to array of json objects