具有更多值MYSQL PHP的重复键

时间:2014-02-27 09:26:08

标签: php mysql

基本上我有一张这样的桌子。 我需要使用重复密钥进行更新。

    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的两行值。

3 个答案:

答案 0 :(得分:2)

INSERT ... ON DUPLICATE KEY UPDATE

您在Author_IDBook_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;

See DEMO

答案 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)