sql - 比较单个表中的值的最佳方法
问题描述
我有一个 SQL 服务器表,其中包含以下格式的数据。
ColumnA : ServerName
ColumnB : ObjectName
ColumnC : HashValue
我需要做的是基于 ColumnB 比较每个服务器的 ColumnC 中的值。目标是查看哪些服务器具有具有不同哈希值的相同对象。
到目前为止,我们所做的是根据服务器名称将表拆分为多个表。所以对于 table_one 它只包含服务器一的数据。
然后我们对服务器二对 table_two 做了同样的事情。
在此之后,我们从 table_one 到 table_two 进行了左连接,因为 table_one 有更多条目。
从这一点我们可以到以下。
select * from table_one
left join table_two
on table_one.ColumnB =table_two.ColumnB
where table_one.ColumnC !=table_two.ColumnC
问题是有 10 个服务器,每个服务器至少有大约 10 000 个条目,这是一个缓慢的过程。
select * into table_one from table_one where ColumnA ="ServerOne"
select * into table_two from table_one where ColumnA ="ServerTwo"
select * from table_one
left join table_two
on table_one.ColumnB =table_two.ColumnB
where table_one.ColumnC !=table_two.ColumnC
我希望看到每个对象的服务器名称与来自服务器一的哈希值不匹配。使用服务器一作为基础,因为它具有大多数对象,不一定与其他对象完全相同。
解决方案
您不必将它们拆分为不同的表。您可以自己加入一个表:
Select a.ColumnA from your_table a
inner join
your_table b on a.ColumnB = b.ColumnB and a.ColumnC != b.ColumnC
编辑:
我不知道您的表上有什么依赖关系,但以防万一目标不是唯一的,只需将查询调整为:
Select a.ColumnA from your_table a
inner join
your_table b on a.ColumnA = b.ColumnA = a.ColumnB = b.ColumnB and a.ColumnC != b.ColumnC
虽然如果你需要这个声明很多,我还是建议你清理你的桌子。
推荐阅读
- css - 将 min(max()) 从 CSS 转换为 SASS
- c++ - 奇怪的密码加密问题 C++ 任何类似的密码都可以使用,
- html - CSS 和图像未在 Spring Boot 的 index.html 中加载
- c# - 如何从 XmlRpcClientProtocol.Invoke 获取请求 XML
- laravel - 从 if 语句中获取我的值以显示在 laravel 中的 if 语句之外
- xcode - 模拟器屏幕在状态更新时重新加载
- node.js - 将数据存储到数组中时出错,第一次值迭代后循环不执行 - NodeJS
- python - 如何在 xy 平面上旋转点云?
- r - 当值存在于至少一个行中时删除一组行
- django - Django 在 3.1 中开始在我的静态 url 相对路径前放置一个斜杠