如何根据另一个 table 的数据更新一个 table?
How to update one table based on the data of an other table?
我在 mySQL 中有以下 2 个表格。我想用 table_2
的数据更新 table_1
如果该数据不存在于 table_1
中或数据已更改。
这些是我的表格:
table_1:
id name desc price
------------------------------
1 a audi 100
2 b bmw 221
3 c mercedes 331
table_2:
id name desc price
------------------------------
1 a audi 1200
2 b bmw 250
3 c mercedes 500
4 d opel 400
5 e volkswagen 340
我想要的输出是:
table_1
id name desc price
------------------------------
1 a audi 1200
2 b bmw 250
3 c mercedes 500
4 d opel 400
5 e volkswagen 340
这是我试过的:
UPDATE table_1
SET (name, desc) = (SELECT table_2.name, table_2.desc
FROM table_2 t2
WHERE table_1.id = table_2.id)
WHERE EXISTS (
SELECT 1
FROM table_2
WHERE table_1.id = table_2.id )
这是我得到的:
Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(name, desc) = (SELECT table_2.name, table_2.desc FROM ' at line 2 0.000 sec
**请注意,我的桌子实际上要大得多。 PS 我正在使用 Toad。
使用 INSERT on DUPLICATE 机制可以在一个非常简洁的查询中完成此操作
INSERT INTO table_1 (`id`, `name`,`desc`,`price`)
(
SELECT `t2`.`id`, `t2`.`name`, `t2`.`desc`, `t2`.`price`
from table_2 t2
where id = t2.id
)
ON DUPLICATE KEY UPDATE `name`=`t2`.`name`,
`desc`=`t2`.`desc`,
`price`=`t2`.`price`;
我在 mySQL 中有以下 2 个表格。我想用 table_2
的数据更新 table_1
如果该数据不存在于 table_1
中或数据已更改。
这些是我的表格:
table_1:
id name desc price
------------------------------
1 a audi 100
2 b bmw 221
3 c mercedes 331
table_2:
id name desc price
------------------------------
1 a audi 1200
2 b bmw 250
3 c mercedes 500
4 d opel 400
5 e volkswagen 340
我想要的输出是:
table_1
id name desc price
------------------------------
1 a audi 1200
2 b bmw 250
3 c mercedes 500
4 d opel 400
5 e volkswagen 340
这是我试过的:
UPDATE table_1
SET (name, desc) = (SELECT table_2.name, table_2.desc
FROM table_2 t2
WHERE table_1.id = table_2.id)
WHERE EXISTS (
SELECT 1
FROM table_2
WHERE table_1.id = table_2.id )
这是我得到的:
Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(name, desc) = (SELECT table_2.name, table_2.desc FROM ' at line 2 0.000 sec
**请注意,我的桌子实际上要大得多。 PS 我正在使用 Toad。
使用 INSERT on DUPLICATE 机制可以在一个非常简洁的查询中完成此操作
INSERT INTO table_1 (`id`, `name`,`desc`,`price`)
(
SELECT `t2`.`id`, `t2`.`name`, `t2`.`desc`, `t2`.`price`
from table_2 t2
where id = t2.id
)
ON DUPLICATE KEY UPDATE `name`=`t2`.`name`,
`desc`=`t2`.`desc`,
`price`=`t2`.`price`;