#sql #insert #exists #interbase
#sql #вставить #существует #interbase
Вопрос:
Я хотел бы объединить запрос на вставку с «где не существует»
Вот мой SQL :
INSERT INTO MYTABLE (ACT_ORDER, MNU_ACTION, ACT_STATUT, ACT_BEFORE, ACT_AFTER)
SELECT (1,'acOuvPOS', 'T', 'T', NULL)
WHERE NOT EXISTS (SELECT * FROM MYTABLE WHERE (MNU_ACTION ='acOuvPOS' AND ACT_STATUT = 'T' AND ACT_BEFORE= 'T');
Но когда я выполняю SQL, у меня возникает эта проблема
Недопустимый токен. Динамическая ошибка SQL. Код ошибки SQL = -104. Неизвестный токен — строка 2, символ 8. ,.
Как я могу это решить, пожалуйста, заранее спасибо
Комментарии:
1. Какую версию SQL вы используете (например, MySQL)?
2. Вам не хватает закрытия
)
перед завершением;
3. Какую СУБД вы используете?
4. Извините, я пропустил закрытие) при выполнении запроса я использую Interbase 6.0.2
5. Я думаю, что для этого
SELECT
нужноFROM
предложение.
Ответ №1:
ВСТАВИТЬ В MYTABLE (ACT_ORDER, MNU_ACTION, ACT_STATUT, ACT_BEFORE, ACT_AFTER) ВЫБЕРИТЕ 1, ‘acOuvPOS’, ‘T’, ‘T’, NULL, ГДЕ НЕ СУЩЕСТВУЕТ (ВЫБЕРИТЕ * Из MYTABLE, ГДЕ MNU_ACTION =’acOuvPOS’ И ACT_STATUT = ‘T’ И ACT_BEFORE= ‘T’)
Комментарии:
1. Недопустимый токен. Динамическая ошибка SQL. Код ошибки SQL = -104. Неизвестный токен — строка 1, символ 0. ЕСЛИ.
2. Недопустимый токен. Динамическая ошибка SQL. Код ошибки SQL = -104. Неизвестный токен — строка 2, символ 36. ГДЕ.
Ответ №2:
вы можете просто сказать :
ЕСЛИ ( НЕ СУЩЕСТВУЕТ (ВЫБЕРИТЕ * Из MYTABLE, ГДЕ (MNU_ACTION =’acOuvPOS’ И ACT_STATUT = ‘T’ И ACT_BEFORE = ‘T’) НАЧИНАЕТСЯ ВСТАВКА В MYTABLE (ACT_ORDER, MNU_ACTION, ACT_STATUT, ACT_BEFORE, ACT_AFTER) (1,’acOuvPOS’, ‘T’, ‘T’, NULL) ЗАКАНЧИВАЕТСЯ