是另一个ON DUPLICATE KEY UPDATE查询

时间:2011-11-27 09:46:03

标签: php mysql on-duplicate-key

我一直在阅读这里的所有问题,但我仍然没有得到它

我有两张相同尺寸的相同桌子。我想使用packages_sorted中的数据更新表packages_sorted_temp,而不会破坏packages_sorted

上的现有数据

packages_sorted_temp仅包含2列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` 

2 个答案:

答案 0 :(得分:3)

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 

答案 1 :(得分:2)

您可以像这样使用更新联接:

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