sql - 如何在 JOIN 语句中查找导致行重复的列?
问题描述
微软 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是一个免费的通用数据库管理器,在结果视图中有一个“计算”面板。可以选择任何单元格/行/列,它会即时计算计数和不同的值计数。这些可以按列分组,这正是搜索哪一列具有不同值时所需要的。超级好用。
解决方案
一种选择是 -
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 的表)...然后您可以分析这些表的连接条件
推荐阅读
- javascript - 我正在尝试从 ES 类参数创建一个数组,但我得到一个空数组,为什么?
- kubernetes - Kubernetes 和故障转移服务
- r - 如何在 download_html 和 download.file 中使用 UTF-8 文件夹名称
- python - 努力让 Django 服务器在虚拟环境中运行
- ios - 使用用户 iOS 货币设置
- tensorflow - Tensorflow,如何实现排序层
- assembly - Shellcode:非法指令
- php - 不存在的 Codeigniter 不起作用
- python - 在函数内部调用 ThreadPoolExecutor 时不使用多个工作程序
- python - 使用 subprocess 模块运行 .bat 文件并将其传递给输入