【问题标题】:MySQL UPDATE table columns based on values in other tablesMySQL UPDATE 表列基于其他表中的值
【发布时间】:2018-08-11 02:15:34
【问题描述】:

我必须根据其他表中的值更新表中的列值。这就是我所拥有的:

 TABLE_A
|----------------|
|编号   |验证 |
|----------------|
| 1    |一个   |
| 2    | b   |
| 3    | c   |
| 4    |一个   |
| 5    | b   |
| 6    | c   |
|----------------|


临时表_B
|----------------|
|编号   |验证 |
|----------------|
| 4    |一个   |
| 5    | b   |
| 6    | c   |
|----------------|


临时表_C
|----------------------------|
|编号   | val1  | val2  |
|----------------------------|
| h    | 4    | b     |
| k    | 4    | e     |
| n    | 5    |一个     |
| o    | 6    | c     |
| p    | 6    | d     |
|问    | 5    | g     |
|----------------------------------------|


我想做的是:

对于 table_a 中的每一行 where (table_a.id = table_b.id) then
其中 (table_a.val = table_c.val2) 设置 table_a.val = table_c.id

我似乎无法为此编写正确的 UPDATE 语句。

谁能帮忙?

【问题讨论】:

    标签: mysql sql-update temp-tables


    【解决方案1】:

    我相信这些方法对你有用(使用INNER JOIN

    UPDATE table_a A
        INNER JOIN table_b B ON A.id = B.id
        INNER JOIN table_c C ON A.val = C.val2
        SET A.val = C.id
    

    【讨论】:

    • 谢谢 Jamie - 但您的回答似乎在语法上不正确(我知道您说的是“类似”)
    • @JeffR 更新了语法。关系数据库中的语法有很多变体,我似乎总是把它们混为一谈。让我知道这是否有效。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-08
    • 2022-06-15
    • 1970-01-01
    • 2020-11-30
    • 2020-08-30
    相关资源
    最近更新 更多