提问人:chiefpika 提问时间:11/16/2023 更新时间:11/16/2023 访问量:32
mysql ON DUPLICATE KEY UPDATE,一次检查 2 列
mysql ON DUPLICATE KEY UPDATE, check 2 columns at a time
问:
假设我的表中有 4 列
ID int(11) AI PK
BANK_ID int(11)
BANK_BRANCH_CODE varchar(255)
BANK_BRANCH_NAME varchar(255)
如果组合已经存在,我想更新,否则插入新数据。BANK_BRANCH_NAME
BANK_ID and BANK_BRANCH_CODE
这是我得到的
INSERT INTO bank_table (BANK_ID, BANK_BRANCH_CODE, BANK_BRANCH_NAME) VALUES
(bankId, bankBranchCode, bankBranchName) ON DUPLICATE KEY UPDATE BANK_BRANCH_NAME = bankBranchName;
但似乎它只是不断插入新数据。 我的查询有什么问题吗?
答:
1赞
mandy8055
11/16/2023
#1
您需要添加对 和 组合的约束。仅当存在唯一约束或主键冲突时才有效。UNIQUE
BANK_ID
BANK_BRANCH_CODE
ON DUPLICATE KEY UPDATE
ALTER TABLE bank_table
ADD UNIQUE (BANK_ID, BANK_BRANCH_CODE);
# other queries...
评论
1赞
ysth
11/16/2023
请注意,当 bank_id 或 bank_branch_code 为 null 时,这将不起作用。
0赞
mandy8055
11/16/2023
@ysth感谢您指出这一点。你是对的。
评论
ALTER TABLE bank_table ADD CONSTRAINT unique_bank_branch UNIQUE (BANK_ID, BANK_BRANCH_CODE);