0

微软 SQL 服务器。我有这种情况:

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是一个免费的通用数据库管理器,在结果视图中有一个“计算”面板。可以选择任何单元格/行/列,它会即时计算计数和不同的值计数。这些可以按列分组,这正是搜索哪一列具有不同值时所需要的。超级好用。

参考:https ://github.com/dbeaver/dbeaver/wiki/Panels

4

1 回答 1

1

一种选择是 -

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 的表)...然后您可以分析这些表的连接条件

于 2018-04-25T10:34:37.260 回答