mysql - 根据与另一个表的连接更新空白记录

标签 mysql

我有一个表,其中某些记录包含一列值为零。现在我想写一个作业,它将根据键从另一个表中获取记录并在第一个表中更新。

它是一种基于与表 B 的连接更新表 A,其中 A 某些记录为空。

我尝试使用临时表的语法来首先获取该列包含零的所有记录,然后使用连接到三个表,一个需要更新,一个是临时表,最后一个是我将从中获取原始表的值(value)。

DROP TABLE IF EXISTS `blank_raw_ids`;

CREATE TEMPORARY TABLE blank_raw_ids (SELECT * FROM ct  where ct.rawid=0);



    UPDATE ct  
      INNER JOIN main_raw_ids as m  ON ct.bid=m.bid
      INNER JOIN blank_raw_ids  as r ON r.bid =m.bid
    SET ct.rawid=r.rawid;

我还觉得我无法正确使用临时表,因为我仍在连接主表和空白表。

最佳答案

但是 blank_raw_ids 只有 rawid=0 的行,所以如果你设置 ct.rawid=r.rawid 你总是 set 0 = 0 没有实际效果。

我想我知道您想复制 main_raw_ids.rawid 的值来替换 ct.rawid,其中 ct.rawid 是 0。

下面的不会那样做吗?

UPDATE ct
  INNER JOIN main_raw_ids AS m ON ct.bid=m.bid
SET ct.rawid = m.rawid
WHERE ct.rawid = 0;

不需要临时表。

关于mysql - 根据与另一个表的连接更新空白记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58157375/

相关文章:

php - 从所有表中选择行的简单方法

具有条件的MySQL UNIQUE约束

mysql - 加入后选择汇总

python - MySQL海量数据查询

MySQL 按特定列值排序,按另一列的日期进行二级排序

php - 如何将数据从表单插入数据库?

php - 从 ROW 获取 ID 并包含在可链接结果中 - PHP MYSQL

mysql - 在 MySQL 中如何为 WHERE-IN 子句指定排序规则?

mysql - 如何在mysql中将创建表的数据类型指定为select?

mysql - MySQL 中日期之间的总时间