2

ここにあるすべての質問を読みましたが、まだわかりません

かなりのサイズの同一のテーブルが 2 つあります。既存のデータを破壊せずに のpackages_sortedデータでテーブルを更新したいpackages_sorted_temppackages_sorted

テーブルpackages_sorted_tempには 2 列のみのデータが含まれてdb_idおり、quality_rank

テーブルpackages_sortedには 35 列すべてのデータが含まれていますが、quality_rank0 です

各テーブルの主キーはdb_id、これでトリガーしたいものですON DUPLICATE KEY UPDATE

本質的に、これらの 2 つのテーブルを変更してマージするにはどうすればよいですか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 に答える