我最后一个问题归结为这个主题,我没有得到确切答复:
我从一个表中选择数据,在数据上运行某些任务,然后将新数据插入第二个表。如果新数据与表2中的现有行匹配,那么我想进行更新。问题是,没有关键来检查欺骗。如果新数据行与基于2个字段的现有行匹配,那么它将被视为欺骗,在这种情况下需要更新。
我见过最接近答案的是: http://www.karlrixon.co.uk/articles/sql/update-multiple-rows-with-different-values-and-a-single-sql-query/
然而,我不确定这是否是我应该进入的正确方向。
答案 0 :(得分:1)
修改你的第二个表以添加一个唯一的键,它是两列的组合,然后使用INSERT ... ON DUPLICATE KEY UPDATE
编辑:
为了清楚起见,索引不仅限于单个列。您可以创建一个列组合的索引:
ALTER TABLE table2 ADD UNIQUE INDEX(column1, column2);
答案 1 :(得分:0)
让我们看看 - 你有两个表,你想创建第三个表而没有任何重复。这很容易 - 首先,重复一个表。第二,我们将从另一个表中选择与第一个表没有重复的行。
INSERT INTO table3 (table3.col1, table3.col2 ) (SELECT table1.src, table1.col1, table1.col2 FROM table1 WHERE table1.col1 NOT IN (SELECT col1 FROM table2));
col1是您检查复制的位置。查询会很慢。