INSERT INTO ... WHERE NOT EXISTS 的 mySQL 语法

标签 mysql sql syntax

如果教员不存在,我将尝试插入一个带有列快捷方式的教员。是的,我知道,这应该很容易...

这就是我的代码: (我用的是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/

相关文章:

php - laravel-tagging 在数据库中创建双条目

内容中出现新行的 MySQL INTO OUTFILE 问题

C# SQL 插入命令

c# - 如何将非表数据导入 SQL Server Reporting Services?

python - 这个简单的 Python 文件中的语法错误是什么?

mysql - 单表继承和改变类型不会保存

Mysql,双重连接两次使用同一张表,但间接

mysql - 优化查询以按联接表中的字段将结果分组

javascript - node.js/JavaScript 语法 - 向传递的参数添加额外的参数

linux - 变量显示在终端中而不是 append 到 Bash 上的文件中