我期待有一种方法来检查当前数据库是否已包含我想更新的指定项目,如果确实如此,我只想更新其中之一。

更确切地说,我有以下内容:



ID (Primary Key, AI)
serverID
channelID
channelROLE


如果我尝试再次添加具有相同serverID和channelROLE的值,我想更新channelID。

我尝试使用ON DUPLICATE KEY UPDATE功能,但是无法弄清楚它并使其能够正常工作以满足我的需求。

最佳答案

如果您有ID,则可以使用INSERT IGNORE

INSERT IGNORE INTO Table1
    (ID, serverID, channelID, channelROLE)
VALUES
    (....);


要么

SET @id = 1,
    @serverId = 123545,
    @channelId = 512580,
    @channelRole = 'john';
INSERT INTO Table1
    (ID, serverID, channelID, channelROLE)
VALUES
    (@id, @serverId, @channelId, @channelRole)
ON DUPLICATE KEY UPDATE
    serverId = @serverId,
    channelId = @channelId,
    channelRole = @channelRole;


或替换

REPLACE INTO table1
    (ID, serverID, channelID, channelROLE)
VALUES
    (...);

关于mysql - 在SQL数据库上插入或更新特定值(如果已存在),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53926131/

10-12 05:26