MySQL 更新两个与第一个不同的表
MySQL UPDATE Two Tables with Differences From The First
我有两个 tables table1 和 master。 Master 是联系人的主数据库。表 1 包含一项研究中受访者调查的最新联系信息。
table1 包含当前信息 - 两个 table 都通过公共变量 ID
连接
这里是 select 查询(它工作得很好) - 它找到所有记录,其中 field1 或 field2 在 table1 和主 table[=12 之间不同=]
SELECT
t1.ID,
t1.field1,
m.field1,
t1.field2,
m.field2
FROM
table1 t1
INNER JOIN master m ON t1.ID = m.ID
where
(
(t1.field1 <> m.field1) OR
(t1.field2 <> m.field2)
)
我的问题是:如何将 SELECT 语句转换为 UPDATE 语句,以便 table1 中具有不同值的所有记录覆盖 master [=24= 中的值]?
谢谢。
您可以使用以下更新。
where 子句不会更改最终结果,因为我们将用相同的值覆盖已经正确的行。
UPDATE t1
INNER JOIN master ON t1.id = master.id
SET
t1.field1 = m.field1,
t1.field2 = m.field2
WHERE t1.field1 <> m.field1
OR t1.field2 <> m.field2;
我有两个 tables table1 和 master。 Master 是联系人的主数据库。表 1 包含一项研究中受访者调查的最新联系信息。
table1 包含当前信息 - 两个 table 都通过公共变量 ID
连接这里是 select 查询(它工作得很好) - 它找到所有记录,其中 field1 或 field2 在 table1 和主 table[=12 之间不同=]
SELECT
t1.ID,
t1.field1,
m.field1,
t1.field2,
m.field2
FROM
table1 t1
INNER JOIN master m ON t1.ID = m.ID
where
(
(t1.field1 <> m.field1) OR
(t1.field2 <> m.field2)
)
我的问题是:如何将 SELECT 语句转换为 UPDATE 语句,以便 table1 中具有不同值的所有记录覆盖 master [=24= 中的值]?
谢谢。
您可以使用以下更新。
where 子句不会更改最终结果,因为我们将用相同的值覆盖已经正确的行。
UPDATE t1
INNER JOIN master ON t1.id = master.id
SET
t1.field1 = m.field1,
t1.field2 = m.field2
WHERE t1.field1 <> m.field1
OR t1.field2 <> m.field2;