gpt4 book ai didi

mysql - 如何在重复 key 更新后添加 AND ?

转载 作者:行者123 更新时间:2023-11-29 07:19:34 25 4
gpt4 key购买 nike

这是我的 mysql 查询:

INSERT INTO TEACHER (FACULTYID,FIRST_NAME,SURNAME) 
VALUES('17427', 'fn', 'ls')
ON DUPLICATE KEY UPDATE TEACHERID = TEACHERID,
FACULTYID = FACULTYID,
FIRST_NAME = 'fn',
SURNAME = 'ls'
WHERE FIRST_NAME = 'fn'
AND SURNAME = 'ln'

仅当名字和姓氏的组合匹配时,我才想更新这些值。我怎样才能这样做?

例如,如果我的表中有以下行

TeacherID = primary key
FACULTYID = foreign key
FIRST_NAME = unique
SURNAME = unique

TeacherID, FACULTYID, FIRST_NAME, SURNAME
6678 17427 Makram Bou Nassar

我又遇到了同一位老师的另一个实例

FIRST_NAME = Makram, SURNAME = Bou Nassar. 

然后我想中止添加新元组,只保留旧元组。

假设我和老师一起来

FIRST_NAME = Makram, SURNAME = OBAJI
then I add a new tuple.
Also add a new tuple when
FIRST_NAME = Ali, SURNAME = Bou Nassar

最佳答案

您需要一个唯一索引来识别重复项。 on重复键没有where子句。所以:

CREATE UNIQUE INDEX unq_teacher_firstname_surname on teacher(first_name, surname);

注意:您还可以使用唯一约束来执行此操作(唯一约束是使用唯一索引实现的)。

然后:

INSERT INTO TEACHER (FACULTYID, FIRST_NAME, SURNAME) 
VALUES('17427', 'fn', 'ls')
ON DUPLICATE KEY UPDATE FACULTYID = VALUES(FACULTYID);

注释:

  • 您无需设置 first_namesurname,因为它们已经相同。
  • 您无需设置 teacherid,因为输入时未提供该 ID。
  • 表达式 VALUES(FACULTYID) 返回为该列提供的值。

关于mysql - 如何在重复 key 更新后添加 AND ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36676304/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com