gpt4 book ai didi

Mysql 如果两列不存在则插入

转载 作者:可可西里 更新时间:2023-11-01 07:58:27 25 4
gpt4 key购买 nike

我查看了 MySQL 重复键但无法弄清楚。

我有如下表格:

id   series   chapter   path(can be unique)

我只想插入数据而不是更新。假设我有如下数据:

seri:Naruto, klasor:567 ==> 如果这两个都存在于表中则不要插入。

seri:Naruto, klasor:568 ==> 如果 Naruto 存在但 568 不存在则插入。

我怎样才能做到这一点?

最佳答案

最简单的方法是在该表上用两列定义唯一索引:

ALTER TABLE yourtable ADD UNIQUE INDEX (seri,klasor);

您也可以定义两列主键,这同样有效。

然后使用 INSERT IGNORE 只添加不会重复的行:

INSERT IGNORE INTO yourtable (seri, klasor) VALUES ('Naruto',567);
INSERT IGNORE INTO yourtable (seri, klasor) VALUES ('Naruto',568);

编辑: 根据评论,您不能使用 UNIQUE INDEX 这会使事情复杂化。

SET @seri='Naruto';
SET @klasor=567;
INSERT INTO yourtable
SELECT seri,klasor FROM (SELECT @seri AS seri, @klasor AS klasor)
WHERE NOT EXISTS (SELECT seri, klasor FROM yourtable WHERE seri=@seri AND klasor=@klasor);

您可以将上述查询与两个局部变量一起使用,或者通过将局部变量替换为实际值将其转换为单个语句。

更好的方法是使用 stored procedure :

CREATE PROCEDURE yourinsert (vseri VARCHAR(8), vklasor INT)
BEGIN
DECLARE i INT;
SELECT COUNT(*) INTO i FROM yourtable WHERE seri=vseri AND klasor=vklasor;

IF i=0 THEN
INSERT INTO yourtable (seri,klasor) VALUES (vseri, vklasor);
END IF;
END;

这将允许您使用以下方法执行INSERT:

CALL yourinsert('Naruto',567);

关于Mysql 如果两列不存在则插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33411877/

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