Как найти, какой столбец вызывает дублирование строк в операторе JOIN?

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, бесплатный универсальный менеджер баз данных, имеет панель "Calc" в представлении результатов. Можно выбрать любые ячейки / строки / столбцы, и он рассчитывает количество и различное количество значений на лету. Они могут быть сгруппированы по столбцам, и это именно то, что нужно при поиске столбца с различными значениями. Супер полезно.

Ссылка: https://github.com/dbeaver/dbeaver/wiki/Panels

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)... затем вы можете проанализировать условие соединения для этих таблиц

Другие вопросы по тегам