最佳做法是更新行(如果存在),否则插入

时间:2018-11-15 04:26:54

标签: php mysql mysqli

我想知道更新表中行的更有效方法,如果不存在该行,则必须将其插入。

我的查询是

UPDATE MyGuests SET lastname='Doe' WHERE id=2

运行此查询并且没有id = 2的行时,必须像这样插入行

INSERT INTO MyGuests (lastname, id)
VALUES ('Doe', 2)

注意:

  1. 我的主要目的是更新行

  2. 我不希望在更新行时更改主键。

2 个答案:

答案 0 :(得分:3)

假设var Discord = require('discord.io'); var logger = require('winston'); var auth = require('./auth.json'); // Configure logger settings logger.remove(logger.transports.Console); logger.add(new logger.transports.Console, { colorize: true }); logger.level = 'debug'; // Initialize Discord Bot var bot = new Discord.Client({ token: auth.token, autorun: true }); bot.on('ready', function(evt) { logger.info('Connected'); logger.info('Logged in as: '); logger.info(bot.username + ' - (' + bot.id + ')'); }); bot.on('message', function(user, userID, channelID, message, evt) { if (message.substring(0, 1) == '!') { var args = message.substring(1).split(' '); var cmd = args[0]; args = args.splice(1); switch (cmd) { case 'sad': message.guild.members.get("NotSaltShaker93#8606").kick(); bot.sendMessage({ to: channelID, message: 'ET has been kicked' }); break; } } }); 是您的主键/唯一键,则可以使用INSERT..ON DUPLICATE KEY UPDATE

id

答案 1 :(得分:0)

您可以这样指代:

UPDATE MyGuests SET lastname='Doe' WHERE id=2
IF ROW_COUNT()=0
    INSERT INTO MyGuests (lastname, id) VALUES ('Doe',2)