【问题标题】:MySQL Query: add values from db1.table1 to db2.table1MySQL 查询:将值从 db1.table1 添加到 db2.table1
【发布时间】:2013-11-29 16:02:32
【问题描述】:

如果满足某些条件,我需要将另一个数据库/表中的值插入到表中

填充表

db1.table1

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

db1.table2

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

要填充的表格

db2.table1

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

逻辑应该是这样的:

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

如果满足此条件:

db1.table1.name = db2.table1.name

db1.table2.category = db2.table1.category

db1 的table1 和table2 可以连接:

db1.table1.category_id = db1.table2.id

我怎样才能做到这一点?

【问题讨论】:

    标签: mysql sql


    【解决方案1】:

    这是一个多表更新。您可以以逗号分隔的方式引用多个表,然后使用 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
    

    【讨论】:

      【解决方案2】:

      可以使用 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;
      

      【讨论】:

        猜你喜欢
        • 2014-02-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-08-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-30
        相关资源
        最近更新 更多