是另一个ON DUPLICATE KEY UPDATE查询


Yes another ON DUPLICATE KEY UPDATE query

我已经阅读了这里所有的问题,但我仍然不明白

我有两个相当大的相同的表。我想用packages_sorted_temp的数据更新表packages_sorted,而不破坏packages_sorted上的现有数据

packages_sorted_temp只包含db_idquality_rank两列的数据

packages_sorted包含所有35列的数据,但quality_rank为0

每个表的主键都是db_id,这就是我想用ON DUPLICATE KEY UPDATE触发的。

实际上,我如何合并这两个表并更改packages_sortedquality_rank(0到quality_rank)在同一个主键下存储在packages_sorted_temp

这里是不能工作的

INSERT INTO `packages_sorted` ( `db_id` , `quality_rank` )
SELECT `db_id` , `quality_rank`
FROM `packages_sorted_temp` ON DUPLICATE
KEY UPDATE `packages_sorted`.`db_id` = `packages_sorted`.`db_id` 
update packages_sorted , packages_sorted_temp 
set packages_sorted.quality_rank = packages_sorted_temp.quality_rank 
where packages_sorted.db_id = packages_sorted_temp.db_id 

可以这样使用Update join:

Update packages_sorted p
    inner join packages_sorted_temp temp
    on p.db_id = temp.db_id 
set p.db_id = temp.db_id, p.quality_rank = temp.quality_rank