mysql - SQL 来获取唯一键匹配但数据在不同表之间的某些其他列中不同的数据
问题描述
我有两个结构相同的表,如下所示。我正在尝试编写一个查询来使用作为第一列的唯一键比较两个表,并在第二列中存在不匹配时尝试返回值。如果密钥不存在,则无需考虑该数据。仅当两个表中都存在密钥时,我们才对其进行比较。
Table A
ColumnA ColumnB
A 1
B 2
C 2
D 8
Table B
ColumnC ColumnD
A 1
B 3
C 5
F 4
例如,当比较表 A 和 B 时,上表的输出应该是
B 2
C 2
当将表 B 与 A 进行比较时,它应该是
B 3
C 5
理想情况下,应该会出现基表的差异。我已经尝试过加入和联合,但我无法获取上述数据。
解决方案
- 由于您只需要在两个表中具有匹配 FK 值的那些行,我们只需要使用
INNER JOIN
. - 现在,我们可以通过使用简单地考虑不匹配的行
WHERE .. <> ..
比较表 A 和表 B 时,我们只能得到表 A 行:
SELECT
tA.*
FROM tableA AS tA
JOIN tableB AS tB
ON tB.ColumnC = tA.ColumnA
WHERE tB.ColumnD <> tA.ColumnB
将表 B 与表 A 进行比较时,只需从表 B 中获取行:
SELECT
tB.*
FROM tableA AS tA
JOIN tableB AS tB
ON tB.ColumnC = tA.ColumnA
WHERE tB.ColumnD <> tA.ColumnB
推荐阅读
- python - Python SimpleHTTP Server rfile.readlines() 需要很长时间
- yaml - 如何在 YAML 中获取当前 URL?
- c# - 试图从其他对象访问变量
- c - main vs _start 中的返回值
- javascript - 模态没有出现在点击
- json - 使用json从django后端获取并显示reactjs中的图像
- javascript - 创建纵横比计算器
- c# - 动态更改自定义组合框样式
- javascript - 我的开尔文/华氏转换器的内部 JavaScript 无法正常工作
- r - 如何在闪亮或 flexdahsboard 中制作用户选择的变量图表?