我有一个表,其中某些记录包含一列值为零。现在我想写一个作业,它将根据键从另一个表中获取记录并在第一个表中更新。
它是一种基于与表 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/