【问题标题】:Fill mysql column if two tables has the same value如果两个表具有相同的值,则填充 mysql 列
【发布时间】:2013-07-22 14:51:24
【问题描述】:

我有两个mysql表,都有3列,第一个表第三列是空的,第二个表第三列有数据。

表 1

---------|------------|---------|
codprc   | numideent  |  Empty  |
---------|------------|---------|
20000002 | 890300604  |         |
20000002 | 800077226  |         |
20000003 | 890300604  |         |
20000003 | 79692317   |         |
20000003 | 22802672   |         |<-----
20000005 | 240284866  |         |
20000005 | 20310518   |         |
20000005 | 17189852   |         |
20000005 | 17118956   |         |
20000005 | 41496516   |         |
20000005 | 20713128   |         |
20000005 | 19142900   |         |

表2

---------|------------|----------|
icodprc  | inumideent | icodcpe  |
---------|------------|----------|
20000003 | 22802672   |    3     |<------
20000003 | 79692317   |    3     |
20000003 | 890300604  |    4     |
20000003 | 890300604  |    4     |
20000005 | 17118956   |    4     |
20000005 | 17189852   |    4     |
20000005 | 19142900   |    4     |
20000005 | 20284866   |    4     |
20000005 | 20310518   |    4     |
20000005 | 20713128   |    3     |
20000005 | 41496516   |    4     |
20000007 | 890300604  |    4     |
20000008 | 890300604  |    4     |
20000009 | 41462678   |    4     |
20000009 | 860351432  |    3     |
20000010 | 890300604  |    4     |

我需要用第二个表的第 3 列填充第一个表的第 3 列但只要两个表的第一个和第二个列相等。

例如 tale2.icodprc 和 table2.inumideent 第 1 行的值等于 table1.codprc table1.numideent 第 5 行,所以 icodcpe 的值必须填充第 5 行的空列。

我已经尝试了几个选项,但我认为我错过了一些东西。

谢谢。

【问题讨论】:

    标签: mysql


    【解决方案1】:

    您可以使用多表UPDATE 语法来连接表:

    UPDATE Table1
      JOIN Table2
        ON Table2.icodprc    = Table1.codprc
       AND Table2.inumideent = Table1.numideent
    SET    Table1.Empty      = Table2.icodcpe
    

    sqlfiddle 上查看。

    【讨论】:

    • 谢谢它有效,我不知道更新连接语法。再次感谢
    【解决方案2】:

    这行得通吗?

    UPDATE Table1 
       SET Empty = (SELECT icodcpe 
                      FROM Table2 
                     WHERE Table1.codprc = Table2.icodprc
                       AND Table1.numideent = Table2.inumideent)
    

    【讨论】:

    • 不,我已经尝试过了,但子查询返回超过 1 行
    猜你喜欢
    • 1970-01-01
    • 2022-08-11
    • 2018-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-13
    • 1970-01-01
    • 2017-04-14
    相关资源
    最近更新 更多