2

我一直在阅读这里的所有问题,但我仍然不明白

我有两张相当大的相同桌子。我想packages_sorted用数据更新表packages_sorted_temp而不破坏现有数据packages_sorted

packages_sorted_temp仅包含 2 列的数据,db_id并且quality_rank

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

每个表上的主键是db_id,这就是我想要触发的ON DUPLICATE KEY UPDATE

本质上,我如何通过和更改合并这两个表packages_sortedquality_rank0 到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` 
4

2 回答 2

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 
于 2011-11-27T09:51:51.607 回答
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 
于 2011-11-27T10:02:12.660 回答