基于与另一个表的连接更新空白记录



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

它基于与表 B 联接的更新表 A 的类型,其中 A 某条记录为空。

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

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为 0 的ct.rawid

下面不行吗?

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

无需临时表。

最新更新