2

似ているテーブルが 2 つあります。

Table word
column names: id, name, describe
1 bob Is a cat
2 Sam Not a giraffe
3 Gub Like a cat

Table temp
column names: id, name, describe
1 bob Is a cat
2 Sam Not a giraffe
3 Gub Like a cat
4 Col The other one

現在、これを使用してテーブル temp からテーブル ワードを更新していますが、4 番目の値が追加されていません。どうすればいいですか?

UPDATE temp p, word pp
SET pp.name= p.name, pp.describe = p.describe
WHERE pp.id = p.id;
4

3 に答える 3

4

これを試してください :: INSERT ON DUPLICATE KEY UPDATE

INSERT INTO word(id, name, describe) SELECT id, name, describe FROM temp 
ON DUPLICATE KEY UPDATE SET word.name = temp.name, word.describe = temp.describe;
于 2012-12-09T18:37:06.057 に答える
1

私の理解が正しければ、あるテーブルから別のテーブルに値をコピーし、同じ値を保持したいと考えていますid。この場合、条件 WHERE pp.id = p.id を入れることはできません。このようにしてid、「単語」テーブルに既に存在する行のみをコピーし、一意の行をスキップします。「INSERT INTO...ON DUPLICATE KEY UPDATE」を使用して回避できます。http://dev.mysql.com/doc/refman/5.1/en/insert-on-duplicate.html

于 2012-12-09T18:38:53.560 に答える
0

最後のものはまだ存在しないため、insert ステートメントが必要です。

INSERT INTO word pp SELECT * FROM temp left join word on temp.id = word.id where temp.id IS NULL

于 2012-12-09T18:33:56.183 に答える