如果符合某些条件,我需要从另一个数据库/表中插入表值
----------------------------------------------------
id | name | category_id | value1 | value2
----------------------------------------------------
--------------------
id | category
--------------------
---------------------------------------------
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
我怎样才能做到这一点?
答案 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;