【问题标题】:How do I take an entire columns worth of data and put it into anther column using a WHERE clause?如何使用 WHERE 子句获取整个列的数据并将其放入另一列?
【发布时间】:2013-09-13 17:06:20
【问题描述】:

我在同一个数据库中有两个极其相似的表。我想从表 p992_cq31n06-cm16-x 中取出整个 'visual' 列,并将其放入表 p992_cq31n06-cu67-x 的 'visual' 列中,其中列 'print' 和 'id3' 匹配。

这是我要运行的查询:

    UPDATE `p992_cq31n06-cu67-x`
    SET visual = (
        SELECT visual
        FROM `p992_cq31n06-cm16-x`
    WHERE 
        `p992_cq31n06-cu67-x`.print = `p992_cq31n06-cm16-x`.print 
    AND
        `p992_cq31n06-cu67-x`.id3 = `p992_cq31n06-cm16-x`.id3);

这会按我想要的方式工作吗?

【问题讨论】:

    标签: mysql sql database subquery


    【解决方案1】:

    是的,您的查询将按照您希望的方式进行。

    您也可以使用join 来表达这一点:

    UPDATE `p992_cq31n06-cu67-x` cu67 join
           `p992_cq31n06-cm16-x`cu16
           on cu67.print = cu16.print and cu67.id3 = cu16.id3
        SET cu67.visual = cu16.visual;
    

    如果要设置多列,join 特别有利。

    【讨论】:

      【解决方案2】:

      使用连接:

      update p992_cq31n06-cu67-x a 
      inner join p992_cq31n06-cm16-x b on a.print = b.print and a.id3 = b.id3
      set a.visual = b.visual
      

      对于 MSSQL(这是我误读的问题!)它的

      update a
      set visual = b.visual
      from
      p992_cq31n06-cu67-x a
      inner join p992_cq31n06-cm16-x b on a.print = b.print and a.id3 = b.id3
      

      【讨论】:

      • @GordonLinoff DOH,我不知道为什么我将 MySQL 读为 MSSQL!现已修复
      猜你喜欢
      • 2010-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-30
      相关资源
      最近更新 更多