0

我有两个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 行的空列。

我尝试了几种选择,但我认为我遗漏了一些东西。

谢谢。

4

2 回答 2

2

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

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

sqlfiddle上查看。

于 2013-07-22T14:56:53.113 回答
1

这行得通吗?

UPDATE Table1 
   SET Empty = (SELECT icodcpe 
                  FROM Table2 
                 WHERE Table1.codprc = Table2.icodprc
                   AND Table1.numideent = Table2.inumideent)
于 2013-07-22T14:55:20.347 回答