2017-01-06 4 views
1

Я пытаюсь вставить факультет с ярлыком столбца, если он не существует. Да я знаю, это должно быть легко ...mySQL Синтаксис для INSERT INTO ... WHERE NOT EXISTS

Так вот мой код: (я использую 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; 

Оба бросить ошибка синтаксиса. Я думаю, что я действительно глуп, я скопировал запрос из документов, но он не работает.

ответ

1

В вашем запросе отсутствует предложение FROM. Он должен быть

INSERT INTO faculties(shortcut) 
SELECT 'BWI-M' FROM some_table 
WHERE NOT EXISTS 
(SELECT 1 FROM faculties WHERE shortcut = 'BWI-M'); 

(OR), вы можете использовать dual таблицу как

INSERT INTO faculties(shortcut) 
SELECT 'BWI-M' FROM dual .... 

Хотя не вижу цели этого WHERE NOT EXISTS состояния. Вы можете, вероятно, просто сказать

INSERT INTO faculties(shortcut) VALUES('BWI-M') 
+0

Если эта таблица имеет несколько строк, OP получит несколько записей; они должны, вероятно, выбрать из [DUAL] (http://dev.mysql.com/doc/refman/5.7/en/select.html) – Uueerdo

+0

@Uueerdo, справа. Отредактированный ответ. Спасибо, что указали то же самое. – Rahul