MySQL Query:将db1.table1中的值添加到db2.table1

时间:2013-11-29 16:02:33

标签: mysql sql

如果符合某些条件,我需要从另一个数据库/表中插入表值

填充表

db1.table1

----------------------------------------------------
id  |  name  |  category_id |  value1   |   value2  
----------------------------------------------------

db1.table2

--------------------
id | category
--------------------

要填充的表

db2.table1

---------------------------------------------
id | name | category | value1 | value2
---------------------------------------------

逻辑应该是这样的:

db2.table1.value1 and db2.table1.value2插入db1.table1.value1 and db1.table1.value2个值。

如果满足这些条件:

db1.table1.name = db2.table1.name

db1.table2.category = db2.table1.category

可以加入db1上的table1和table2:

db1.table1.category_id = db1.table2.id

我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:0)

这是一个多表更新。您可以以逗号分隔的方式引用多个表,然后使用WHERE子句指定它们的连接方式。

http://dev.mysql.com/doc/refman/5.0/en/update.html

为了让事情变得简单,我一直使用别名。它可能不完全正确,因为我可能误解了你,但这基本上将所有三个表连接在一起,并且只有在名称字段上存在完整的内连接匹配时,它才会更新值。

update db2.table1 new, db1.table1 base, db1.table2 cat
set
new.category=cat.name,
new.value1=base.value1,
new.value2=base.value2
where 
new.name=base.name
and
base.category_id=cat.id

答案 1 :(得分:0)

插入可以使用SELECT函数 像:

INSERT INTO db2.table1(name, category, value1, value2) SELECT t1.name, t2.category, t1.value1, t1.value2 FROM db1.table1 as t1 INNER JOIN db1.table2 as t2 ON t1.id_category = t2.id;