【问题标题】:Replacing column values in MariaDB from other table从其他表中替换 MariaDB 中的列值
【发布时间】:2017-11-27 18:23:29
【问题描述】:

我从其他各种线程中拼凑出以下 sn-p:

UPDATE assets SET asset_tag=tmp_x.new FROM tmp_x WHERE asset_tag=tmp_x.old;

assets 是我的包含asset_tag 列的表。

tmp_x 包括两个 int 列,oldnew

我正在尝试通过 tmp_x 值更新 asset_tag 列中的现有值,但在 MariaDB 中,上述命令返回语法错误。到目前为止,进一步的研究已经产生了从INNER JOIN 到完全合并表的所有内容,这似乎有点矫枉过正。

来自assets的例子:

asset_tag   id
12345       1
12346       2
12347       3

来自tmp_x

old     new
12345   88881
12346   88882

请注意,并非asset_tags 的所有值都在tmp_x 中,所以我只更改了一些。

提前感谢您的任何提示!

【问题讨论】:

    标签: mysql mariadb


    【解决方案1】:
    update assets as tgt
    inner join tmp_x as src on tgt.asset_tag=src.old
    set tgt.asset_tag=src.new
    

    【讨论】:

    • 谢谢!这很好,很简单。
    • 也可能跑得快一点;-)
    【解决方案2】:

    在几次尝试清除我的数据库之后,结果证明我已经接近了,但还不够详细。这是工作命令:

    UPDATE assets 
    SET asset_tag = (SELECT new FROM tmp_x WHERE old=asset_tag) 
    WHERE asset_tag = (SELECT old FROM tmp_x WHERE old=asset_tag);
    

    如果有更优雅的方法,请告诉我!

    【讨论】:

      猜你喜欢
      • 2016-02-20
      • 1970-01-01
      • 2019-10-11
      • 1970-01-01
      • 2018-02-18
      • 2022-09-23
      • 1970-01-01
      • 2013-10-29
      • 2023-03-03
      相关资源
      最近更新 更多