从另一个表格的列

时间:2015-09-02 11:11:05

标签: mysql sql join sql-update

我有两张桌子。一个是payment1,另一个是payment2。它们都有4个相互列。 Id, InvoiceNumber, TransactionCodeDate。在表payment1中,某些TransactionCode不同或缺失。由于其中只有一部分不同,我希望使用TransactionCode中的payment2根据它们不同的Id数字进行更新。

我知道它有点令人困惑,所以让我用一个例子解释一下:

    表li1中的
  • ,Id为926,交易代码为5398.在表payment2中,Id为926,但交易代码为53269845。

  • 表li1中的
  • ,Id为927,事务代码为空。在表payment2中,Id为926,但交易代码为54895321。

我想说明Id的相同位置,请使用其他表格更新TransactionCode

我试过了:

"update payment1 set payment1.TransactionCode=payment2.TransactionCode
from payment1 
join payment2 on (payment1.TransactionCode=payment2.TransactionCode)"

这就是错误:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '5 from payment join table63 on (payment1.TransactionCode=payment2.TransactionCode)' at line 1

谢谢你的到来。

2 个答案:

答案 0 :(得分:1)

    update payment1 TB1
    set TB1.Transactioncode=(select B.Transactioncode from payment2 B
    JOIN payment1 a
    on a.Transactioncode=B.Transactioncode AND B.Transactioncode=TB1.Transactioncode)

答案 1 :(得分:1)

UPDATE Payment1 P1 
SET P1.TransactionCode= (SELECT P2.TansactionCode FROM Payment2 P2 WHERE P1.TransactionCode<>P2.TransactionCode AND P1.Id=P2.Id)

OR

UPDATE Payment1
SET Payment1.TransactionCode= (SELECT Payment2.TansactionCode FROM Payment2 WHERE Payment1.TransactionCode<>Payment2.TransactionCode AND Payment1.Id=Payment2.Id)

其中,Payment1&amp; Payment2是表名(假设) 并且,ID&amp; TransactionCode是列名(假设)