我正在重新发布我删除的上一个问题的更清晰版本。
如下面的示例所示,我希望仅当table_b
的ID未出现在table_a
的{{1}}中时,我才想将table_b
合并到table_a
}列。每个表对于它没有的任何字段应该具有空值。
示例:
表-A
table_b_id
表-B
+----+-------+------------+
| id | name | table_b_id |
+----+-------+------------+
| 0 | mike | 1 |
+----+-------+------------+
| 1 | jack | 1 |
+----+-------+------------+
结果:
+----+-------+
| id | name |
+----+-------+
| 0 | tom |
+----+-------+
| 1 | joe |
+----+-------+
答案 0 :(得分:1)
您的问题几乎可以直接转换为查询。您希望查看表格 A ,但补充了来自 B 的行,其中id
B 不在{{1 } A 。因此,以下table_b_id
将 A 与 B 的子集结合在一起,其中 B 的UNION
不在{{1} }}:
id
请注意,对于第二组,我们选择table_b_id
为SELECT table_a.id AS original_id, table_a.name, table_a.table_b_id FROM table_a
UNION ALL
SELECT table_b.id AS original_id, table_b.name, NULL AS table_b_id FROM table_b
WHERE table_b.id NOT IN (SELECT table_a.table_b_id FROM table_a)
,因为 A 没有此字段。