Sql 如何在JOIN语句中查找导致行重复的列?

Sql 如何在JOIN语句中查找导致行重复的列?,sql,sql-server,database,join,multiple-results,Sql,Sql Server,Database,Join,Multiple Results,MS SQL Server。我有这样的情况: SELECT x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13 FROM T1 -- this has a lot of columns JOIN T2, -- this has a lot of columns T3, -- this has a lot col

MS SQL Server。我有这样的情况:

SELECT
    x1,
    x2,
    x3,
    x4,
    x5,
    x6,
    x7,
    x8,
    x9,
    x10,
    x11,
    x12,
    x13
FROM
    T1  -- this has a lot of columns
JOIN
    T2, -- this has a lot of columns
    T3, -- this has a lot columns as well
    T4, -- same here and other tables
    T5,
    T6,
    T7,
    T8,
    T9,
    T10,
    T11,
    T12,
    T13,
    T14
我有一些重复的行,所以包含不同值的列不在这13个选定列中。我想通过查找联接表中哪个列的值不同来解决这个问题,然后决定如何处理它

解决方案是选择
T1.*
T2.*
等,并仔细分析结果。问题是,我不得不选择很多专栏,花时间做重复性的工作

是否有一个工具/程序/查询可以自动为我完成?我相信在开发复杂的数据库查询时,这是一项常见的任务

编辑

我发现了一个优秀的工具,它可以简化对
select*
查询结果的分析

Dbeaver,一个免费的通用数据库管理器,在结果视图中有一个“计算”面板。可以选择任何单元格/行/列,并动态计算值的计数和不同计数。这些可以按列分组,这正是搜索具有不同值的列时所需的。非常有用

参考资料:

一个选项是:

SELECT
    x1, count (DISTINCT T1.*),
    x2, count (DISTINCT T2.*),
    x3, count (DISTINCT T3.*)
FROM
    T1  -- this has a lot of columns
JOIN
    T2, -- this has a lot of columns
    T3
GROUP BY
    x1,
    x2,
    x3

这将告诉您哪些表具有重复行(计数大于1的表)。。。然后,您可以分析这些表的连接条件

否,这不是一项“常见任务”。在开发查询时,最好从简单开始,逐渐增加复杂性,这样您就可以看到数据发生了什么。另外,您的示例查询使用交叉连接,这必然会产生笛卡尔乘积。您似乎需要阅读一些SQL查询的介绍,甚至关系数据库。你想要你想要的东西是非常不可能的:每个表中每一行的可能组合。我不是在开发查询。我对数据库没有确切的了解(没有人知道),需要修复一个现有的查询,该查询在数百万行中只有一行失败。这可能是数据中的一个小问题,查询是正常的。有很多关系不是由外键指定的,还有迁移工件(例如,一个“唯一”标识符,它与几十万行相同)。我要求的是一种分析数据的方法,而不是如何编写SQL或关系数据库如何在教室中工作。这会导致“不正确的语法接近*”。你的意思是计数(不同的T1.x1)(假设x1来自T1)不是我的意思是计数(不同的T1.*),因为考虑到表的所有列,这会告诉你该表不同行的数量-这对红移有效。。。我没有尝试其他DBS。在本例中,您需要在DISTINCT之后列出所有列的名称。希望SQLServerManagementStudio可以在不必键入的情况下为您获取列表