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“word”表中已经存在的行,跳过任何唯一的行。您可以使用“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 INTO word pp SELECT * FROM temp left join word on on temp.id = word.id where temp.id IS NULL

于 2012-12-09T18:33:56.183 回答