基本上我有一张这样的桌子。 我需要使用重复密钥进行更新。
Author_ID Book_ID Rating
==================================
1 1 5.5
1 2 8.5
1 3 9
2 1 6.5
2 2 7
因此,在上表中,如果我需要单独更新Author_ID - 1和Book_ID - 1的评级,从5.5到8 我怎样才能做到这一点?
简而言之,只使用Duplicate键更新每位作者的评级。
抱歉绅士, 我的问题是 - 检查行是否存在 - 如果存在则更新 - 否则插入。 单个查询来执行插入或更新。 类似于ON DUPLICATE的两行值。
答案 0 :(得分:2)
INSERT ... ON DUPLICATE KEY UPDATE
您在Author_ID
和Book_ID
上有复合主键,是吗?
如果不这样做,请先ALTER TABLE
:
ALTER TABLE table_like_this ADD PRIMARY KEY(Author_ID, Book_ID);
如果你这样做,请转到:
INSERT INTO table_like_this(Author_ID, Book_ID, Rating)
VALUES (1,1,8)
ON DUPLICATE KEY UPDATE Rating = 8;
答案 1 :(得分:1)
试试这个。 INSERT ... ON DUPLICATE KEY UPDATE
INSERT INTO table_like_this(Author_ID, Book_ID, Rating)
VALUES (1,1,8)
ON DUPLICATE KEY UPDATE Rating = 8;
答案 2 :(得分:0)
UPDATE tbl
SET rating = 8
WHERE `Author_ID` = 1 AND `Book_ID` =1;
还要考虑为每个表都设置主键。必须的!如果您的表是连接表,则应创建多个字段主键(字段Author_id,Book_id)