mysql - 在两个表、两列之间选择
问题描述
我试图通过比较每个表中的 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;
解决方案
有两种方法,如果我只想同步两个表,我直接使用INSERT SELECT
。
INSERT INTO TableB (ColumnA, ColumnDate)
SELECT FROM TableA (ColumnA, ColumnDate)
ON DUPLICATE KEY UPDATE ColumnDate = ColumnDate
但要注意,您需要在TableB上有主键或唯一索引,因此引擎只会根据接收表的唯一性/pk 插入新行。
推荐阅读
- javascript - 信息窗口中带有单击事件的按钮
- ajax - Ajax 调用在 MVC 中的 foreach 循环中不起作用
- python - 使用所需索引从列表中访问多维数组元素的快速命令
- python - router.register 默认 POST 方法将空值写入 postgres DB
- android-preferences - Android Studio - PreferenceScreen 不是“预览”
- python - 电子邮件的正则表达式也适用于十进制值。我如何解决它?
- mysql - MYSQL 查询优化使用 Distinct
- c# - 如何在 Xamarin Android c# 中获取按钮控件的背景图像?
- jquery - jqgrid 不与 viewmodel 一起使用,但与 model 一起使用
- javascript - 如何使用javascript在for循环中使函数名动态化