MySQL 如果存在则更新,否则插入会抛出语法错误
MySQL update if exists else insert throws syntax error
尝试根据特定用户名而不是 ID 更新现有记录,但没有成功。我写了以下查询,但我遇到了找不到的语法错误。
IF EXISTS (SELECT 1 FROM users WHERE username = 'REMOTEUSER1')
THEN
BEGIN
UPDATE users
SET username = 'REMOTEUSER1', password = 'BJxp98YkVbt4', exp_date = '1650991560', member_id = 1, is_mag = '0', play_token = '', reseller_notes = ''
WHERE username = 'REMOTEUSER1'
END;
ELSE
BEGIN
INSERT INTO users (
username,
password,
exp_date,
member_id,
is_new,
play_token,
reseller_notes
) VALUES (
'REMOTEUSER1',
'BJxp98YkVbt4',
'1650991560',
1,
0,
'',
''
)
END;
END IF;
IF-ELSE
条件语句构造支持通过 FUNCTIONS
或 STORED PROCEDURES
使用,不能像普通查询那样使用它。
如果您的 username
列是 UNIQUE index
或 PRIMARY KEY
我会使用 INSERT ... ON DUPLICATE KEY UPDATE
Statemen
INSERT INTO users (
username,
password,
exp_date,
member_id,
is_new,
play_token,
reseller_notes
) VALUES (
'REMOTEUSER1',
'BJxp98YkVbt4',
'1650991560',
1,
0,
'',
''
) ON DUPLICATE KEY UPDATE
password = 'BJxp98YkVbt4',
exp_date = '1650991560',
member_id = 1,
is_mag = '0',
play_token = '',
reseller_notes = '';
如果 is_mag
是位 (1)(布尔值),则可能是您将其设置为“0”的更新部分
要么将布尔值设置为 整数 值 0,要么在其前面加上 b
即
my_bool = b'0'
尝试根据特定用户名而不是 ID 更新现有记录,但没有成功。我写了以下查询,但我遇到了找不到的语法错误。
IF EXISTS (SELECT 1 FROM users WHERE username = 'REMOTEUSER1')
THEN
BEGIN
UPDATE users
SET username = 'REMOTEUSER1', password = 'BJxp98YkVbt4', exp_date = '1650991560', member_id = 1, is_mag = '0', play_token = '', reseller_notes = ''
WHERE username = 'REMOTEUSER1'
END;
ELSE
BEGIN
INSERT INTO users (
username,
password,
exp_date,
member_id,
is_new,
play_token,
reseller_notes
) VALUES (
'REMOTEUSER1',
'BJxp98YkVbt4',
'1650991560',
1,
0,
'',
''
)
END;
END IF;
IF-ELSE
条件语句构造支持通过 FUNCTIONS
或 STORED PROCEDURES
使用,不能像普通查询那样使用它。
如果您的 username
列是 UNIQUE index
或 PRIMARY KEY
我会使用 INSERT ... ON DUPLICATE KEY UPDATE
Statemen
INSERT INTO users (
username,
password,
exp_date,
member_id,
is_new,
play_token,
reseller_notes
) VALUES (
'REMOTEUSER1',
'BJxp98YkVbt4',
'1650991560',
1,
0,
'',
''
) ON DUPLICATE KEY UPDATE
password = 'BJxp98YkVbt4',
exp_date = '1650991560',
member_id = 1,
is_mag = '0',
play_token = '',
reseller_notes = '';
如果 is_mag
是位 (1)(布尔值),则可能是您将其设置为“0”的更新部分
要么将布尔值设置为 整数 值 0,要么在其前面加上 b
即
my_bool = b'0'