当我尝试在MySQL上执行此请求时,第1行上的IF NOT EXISTS
出现SQL语法错误,我不知道为什么。
IF NOT EXISTS (SELECT * FROM `my_table` WHERE first_name = 'Testfn')
BEGIN
INSERT INTO `my_table` (first_name)
VALUES ('Testfn')
END;
我仅在my_table中没有其他相同的名字的情况下才尝试插入first_name。
我也尝试了这种语法,但是仍然出现错误1064“您的SQL语法有错误”:
IF NOT EXISTS (SELECT * FROM `my_table` WHERE first_name = 'Testfn') THEN
INSERT INTO `my_table` (first_name)
VALUES ('Testfn')
END IF;
我分别尝试了
SELECT * FROM
my_table WHERE first_name = 'Testfn'
,它可以工作。而且这样也行不通:
INSERT INTO `my_table` (first_name)
VALUES ('Testfn')
WHERE NOT EXISTS (SELECT * FROM `my_table` WHERE first_name = 'Testfn');
编辑:first_name是数据库中唯一。
最佳答案
您无需编写列名,无需指定即可尝试插入,因为我们已经在上面检查了条件。因此,基本上,您可以使用Merge Statement这样来完成此操作。
MERGE INTO my_table
USING (
SELECT first_name
) t
ON t.first_name = my_table.first_name
WHEN NOT MATCHED THEN
INSERT (first_name) VALUES (t.first_name);
希望这对您有所帮助!