基于两列的MySQL插入/更新

时间:2014-01-29 11:05:13

标签: php mysql pdo

我想基于两列更新或插入数据。

每个用户都可以有条目。每个用户的条目必须是用户唯一的。不同的用户可以共享条目ID。

每个条目都包含一段文字。

id, user_id, entry_number, data
1, 1, 1, "hello"
2, 1, 2, "world"
3, 1, 3, "fizz"
4, 2, 1, "buzz"
5, 2, 3, "fizzbuzz"

我希望能够插入/更新(取决于它是否存在)此数据。我该怎么做? 提前致谢

3 个答案:

答案 0 :(得分:1)

您可以在对上创建唯一索引(user_id,entry_number),然后使用

INSERT ... ON DUPLICATE KEY UPDATE

但是,这个ON DUPLICATE KEY可能是MySQL的非标准扩展(请检查?)。如果您打算在不同的数据库引擎上使用它,您可能需要手动进行检查。

答案 1 :(得分:1)

使用REPLACE:“REPLACE的工作原理与INSERT完全相同,只是如果表中的旧行与PRIMARY KEY或UNIQUE索引的新行具有相同的值,则在插入新行之前删除旧行“。在http://dev.mysql.com/doc/refman/5.0/en/replace.html

REPLACE tbl_name (id, user_id, entry_number, data) VALUES (1, 1, 1, "something")

答案 2 :(得分:0)

使用REPLACEhttp://dev.mysql.com/doc/refman/5.5/en/replace.html

REPLACE INTO your_table (id, user_id, entry_number, data)
VALUES (1, 1, 1, "hello2")