查找哪个表导致视图中出现重复行

时间:2013-01-09 15:11:00

标签: sql sql-server

我在sql server中有一个视图,它应该为每个项目返回一行。一些项目有多行。该视图有很多表连接,所以我不想在每个表上手动运行脚本以找出导致重复的表。有没有一种快速自动的方法来找出哪个表是问题表(也就是具有重复行的表)?

3 个答案:

答案 0 :(得分:3)

我发现最快的方法是:

  1. 找到一个例子dupe
  2. 复制查询
  3. 评论所有加入
  4. 一次添加一个连接,直到你得到另一行
  5. 无论你在哪里开始获取欺骗,你都有多条记录。

答案 1 :(得分:1)

我的技术是制作视图的副本并修改它以按FROM子句的顺序返回每个表中的每一列,并在表名之间添加额外的列作为列名(参见下面的示例)。然后选择几行并慢慢向右扫描,直到找到没有重复行数据的表,这就是导致欺骗的行。

SELECT
   TableA = '----------', TableA.*,
   TableB = '----------', TableB.*
FROM ...

这通常是一种非常快速的方法。注释掉连接的问题是,每次都必须在select子句中注释掉匹配的列。

答案 2 :(得分:0)

我使用了SpectralGhost技术的变体来实现这一点,即使这两种方法都没有真正解决避免手动检查每个表的重复行的问题。
我的变化是使用分而治之的方法来注释连接而不是 单独评论每一个。由于连接数量很多,所以速度要快得多。