2013-09-09 6 views
0

Я использую простой оператор IF NOT EXISTS/WHERE NOT EXISTS в моем SQL-запросе (я пробовал оба), и я всегда получаю ошибку mysql, не знаю почему. Пробовал с разными кавычками, проверили мою версию MySQL-сервера и т.д.Ошибка MYSQL, ЕСЛИ НЕ СУЩЕСТВУЕТ/НЕ СУЩЕСТВУЕТ

Эти заявления я использовал

IF NOT EXISTS (SELECT * FROM kurs_users WHERE kurs_users.uid = 'someuser') 
BEGIN 
    INSERT INTO kurs_users(uid) VALUES ('someuser') 
END 

и

INSERT INTO kurs_users 
VALUES ('', 'someuser') 
WHERE NOT EXISTS (SELECT * FROM kurs_users WHERE uid = 'someuser'); 

Ошибка messasge:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE NOT EXISTS (SELECT * FROM kurs_users WHERE uid = 'someuser')' at line 1

ответ

2

Оператор values не разрешает предложение where. Измените его на insert . . . select. Тем не менее, в MySQL, вы не можете иметь where положение без from, поэтому использовать подзапрос:

INSERT INTO kurs_users 
    select col1, col2 
    from (select '' as col1, 'someuser' as col2) t 
    WHERE NOT EXISTS (SELECT * FROM kurs_users WHERE uid = 'someuser'); 

Я также рекомендую вам список столбцов в явном виде в insert заявлении:

INSERT INTO kurs_users(UnnamedColumn, UserName) 
    select col1, col2 
    from (select '' as col1, 'someuser' as col2) t 
    WHERE NOT EXISTS (SELECT * FROM kurs_users WHERE uid = 'someuser'); 
+0

Проблема заключается в том, что «где не существует». Заявление: INSERT INTO kurs_users (id, uid) select '', 'someuser' ГДЕ НЕ СУЩЕСТВУЕТ (SELECT * FROM kurs_users WHERE uid = 'someuser'); Ошибка: у вас возникла ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с «WHERE NOT EXISTS» (SELECT * FROM kurs_users WHERE uid = 'someuser') 'в строке 1 – user2761114

+0

@ user2761114. , , Исправлена. –