【问题标题】:Update using columns from 2 tables使用 2 个表中的列进行更新
【发布时间】:2017-09-04 20:19:44
【问题描述】:

我正在尝试使用 2 个表设置更新,但我不知道如何加入第二个表。

我现在拥有的:

UPDATE Exp SET AMOUNT = 15, inner join Sal WHERE (DN = 120 AND NOM = 2122) 
OR (DN = 120 AND EAN = 2000000221412);

Table Exp:
  DN  |  NOM  |  AMOUNT  |
 .........................
  120 |  2122 |    0     |


Table Sal:
 NOM  |       EAN        |
..........................
 2122 |   2000000221412  |      

谢谢。

编辑1:没有加入有什么办法吗?

【问题讨论】:

  • 为什么您需要将表 exp 连接到表 sal 而从 sal 表中没有您需要将表 exp 更新到的信息?您可能只需要 where 存在而不是来自 sal 表。

标签: mysql sql sql-update inner-join


【解决方案1】:

通用语法 -

UPDATE A
SET foo = B.bar
FROM TableA A
JOIN TableB B
  ON A.col1 = B.colx
WHERE ...

所以你可以试试这个-

UPDATE Exp SET AMOUNT = 15 
FROM Exp e 
INNER JOIN Sal s 
ON
  e.NOM = s.NOM
WHERE 
  e.DN=120 and s.EAN = 2000000221412; --some conditions. Edit according to your need

这应该可行。

【讨论】:

    【解决方案2】:

    正确的语法将join 作为update 的一部分。你还需要一个join 键,看起来像nom:

    UPDATE Exp inner join
           Sal
           ON exp.nom = sal.nom
        SET exp.AMOUNT = 15
        WHERE exp.DN = 120 AND (exp.NOM = 2122 OR sal.EAN = 2000000221412);
    

    【讨论】:

      猜你喜欢
      • 2012-09-18
      • 1970-01-01
      • 2021-05-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-23
      • 1970-01-01
      相关资源
      最近更新 更多