3

我 Sql server 我使用这个命令来插入值,如果 id 已经存在,则更新 vale

string commandLine = "IF NOT EXISTS(SELECT clientid FROM Rating WHERE clientid = " + clientId + " AND userid = " + userid + ") " +
            "INSERT INTO Rating VALUES(@clientId,@userid,@rating) " +
            "ELSE " +
            "UPDATE Rating SET rating=@rating WHERE clientid = " + clientId + " AND userid = " + userid + ";";

我现在移动到MySQL这个命令将不起作用。MySQL有什么相同的吗?

4

2 回答 2

7

INSERT ... ON DUPLICATE KEY UPDATE在 MySQL 中提供了一种更简单的语法,并且还通过affected-rows API 调用为您提供了关于发生了什么的反馈。根据我的经验,很少有人意识到在您的程序逻辑中知道以下内容是多么方便:

使用 ON DUPLICATE KEY UPDATE,如果将行作为新行插入,则每行的受影响行值为 1,如果更新现有行,则为 2,如果将现有行设置为其当前值,则为 0。

于 2013-02-26T22:44:21.607 回答
1

如果您在 clientid、userid 上有唯一约束或主键,您可以使用INSERT ... ON DUPLICATE KEY UPDATE 语法

INSERT INTO Rating VALUES(@clientId,@userid,@rating)
ON DUPLICATE KEY
UPDATE Rating SET rating=@rating
于 2013-02-26T22:46:37.413 回答