如果教员不存在,我将尝试插入一个带有列快捷方式的教员。是的,我知道,这应该很容易...
这就是我的代码: (我用的是MySQL 5.6.27)
INSERT INTO faculties(shortcut) SELECT 'BWI-M'
WHERE NOT EXISTS (SELECT shortcut FROM faculties WHERE shortcut = 'BWI-M');
还有一个变体:
BEGIN TRY
INSERT INTO faculties(shortcut)
VALUES('BWI-')
END TRY
BEGIN CATCH
IF ERROR_NUMBER() <> 2627
RAISERROR etc
END CATCH;
两者都抛出语法错误。我认为我真的很愚蠢,我从文档中复制了查询,但它不起作用。
最佳答案
您的查询中缺少 FROM
子句。应该是
INSERT INTO faculties(shortcut)
SELECT 'BWI-M' FROM some_table
WHERE NOT EXISTS
(SELECT 1 FROM faculties WHERE shortcut = 'BWI-M');
(或者)你可以像这样使用dual
table
INSERT INTO faculties(shortcut)
SELECT 'BWI-M' FROM dual ....
尽管看不到该 WHERE NOT EXISTS
条件的任何目的。你可能只是说
INSERT INTO faculties(shortcut) VALUES('BWI-M')
关于INSERT INTO ... WHERE NOT EXISTS 的 mySQL 语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41512647/