gpt4 book ai didi

mysql - 如果字段值尚不存在,则插入表中

转载 作者:行者123 更新时间:2023-11-29 12:31:44 25 4
gpt4 key购买 nike

如果我提供的名称值尚不存在,我想将值插入到客户表中的一行中,经过一番搜索后,我使用这个 sql 查询来执行此操作,但它不起作用:(

IF NOT EXISTS (SELECT Name FROM customer WHERE Name = 'Riyafa') 
INSERT INTO customer (`Name`, `Address`, `ContactNo`,`Total_amout`)
VALUES ('Riyafa', 'ABC', '555','1000');

请告诉我为什么这是不正确的。

最佳答案

if 语句仅允许在存储过程、函数和触发器中使用。您可以执行此操作的一种方法是:

INSERT INTO customer (`Name`, `Address`, `ContactNo`,`Total_amout`)
SELECT name, address, contactno, total_amount
FROM (SELECT 'Riyafa' as name, 'ABC' as address, '555' as contact no, '1000' as total_amount) t
WHERE NOT EXISTS (SELECT 1 FROM customer c WHERE c.name = t.name);

但是,更好的方法是让数据库强制执行名称的唯一性。首先创建一个唯一的索引或名称:

CREATE UNIQUE INDEX idx_customer_name ON customer(name);

然后使用诸如重复 key 更新之类的构造:

INSERT INTO customer (`Name`, `Address`, `ContactNo`,`Total_amout`)
SELECT 'Riyafa' as name, 'ABC' as address, '555' as contact no, '1000' as total_amount
ON DUPLICATE KEY UPDATE Name = VALUES(Name);

表达式 ON DUPLICATE KEY UPDATE Name = VALUES(Name) 实际上不执行任何操作,但它可以防止 INSERT 返回错误。

关于mysql - 如果字段值尚不存在,则插入表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27384435/

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