首页 > 解决方案 > 在两个表、两列之间选择

问题描述

我试图通过比较每个表中的 2x 列来查找 TableA 中不在 TableB 中的所有记录。我已经尝试了各种查询,但我无法弄清楚。任何帮助将非常感激。

TableA 有 ColumnA 和 ColumnDate

TableB 有 ColumnA 和 ColumnDate

所以我只想查看 TableA 中的哪些记录与两列的 TableB 都不匹配。此外,TableA 可能有多个匹配字段,因此我需要将它们分组以使每个匹配项在 TableB 中只有 1 个条目。是的,我想将新记录插入 TableB。它似乎比预期的要难。

像这样的东西:

select ColumnDate, ColumnA
from TableA 
where 
(( ColumnDate not in (select ColumnDate from TableB) ) 
and ( ColumnA not in (select ColumnA from TableB) ))
group by ColumnA, ColumnDate;

标签: mysqlsqljoin

解决方案


有两种方法,如果我只想同步两个表,我直接使用INSERT SELECT

INSERT INTO TableB (ColumnA, ColumnDate) 
SELECT FROM TableA (ColumnA, ColumnDate) 
ON DUPLICATE KEY UPDATE ColumnDate = ColumnDate

但要注意,您需要在TableB上有主键唯一索引,因此引擎只会根据接收表的唯一性/pk 插入新行。


推荐阅读