2015-10-24 5 views
0

Я понятия не имею, что я здесь отсутствует:MySQL, если() с отборного заявления

IF (SELECT 'Nazwa' FROM stanowiska WHERE Nazwa LIKE = 'Lakiernik') IS NULL THEN 
INSERT INTO stanowiska (Nazwa) VALUES ('Lakiernik') 
ELSE 
SELECT Nazwa FROM stanowiska WHERE Nazwa LIKE 'Lakiernik' 

Любая помощь будет оценена

+0

Что вы пытаетесь делать? Например, 'LIKE =' недопустимый синтаксис. –

+0

Не могли бы вы отправить сообщение об ошибке, если оно есть? –

+0

Я хочу проверить, существует ли запись. Если нет, я хочу вставить его. Если да, я просто хочу его выбрать. – Marox

ответ

3

Это может быть то, что вы хотите:

IF NOT EXISTS (SELECT 1 FROM stanowiska WHERE Nazwa = 'Lakiernik') THEN 
    INSERT INTO stanowiska (Nazwa) 
     VALUES ('Lakiernik'); 
ELSE SELECT Nazwa FROM stanowiska WHERE Nazwa = 'Lakiernik' 
END IF; 

Даже это действительно странно. Кодовый блок вставляет в THEN и возвращает значение в ELSE. Это не кажется правильным. И, часть возвращаются только Lakiernik, так что я не думаю, что ELSE необходимо:

IF NOT EXISTS (SELECT 1 FROM stanowiska WHERE Nazwa = 'Lakiernik') THEN 
    INSERT INTO stanowiska (Nazwa) 
     VALUES ('Lakiernik'); 
END IF; 

Однако это условие гонки. Итак, если вы хотите, чтобы предотвратить дубликаты, правильный путь:

create unique index unq_stanowiska_nazwa on stanowiska(nazwa); 

Тогда:

INSERT INTO stanowiska (Nazwa) 
     VALUES ('Lakiernik') 
     ON DUPLICATE KEY UPDATE nazwa = VALUES(Nazwa); 
+0

Большое спасибо за этот ответ. Работает отлично – Marox

0

Попробуйте это, не проверял еще:

IF (SELECT 1 FROM stanowiska WHERE Nazwa = 'Lakiernik') 
THEN 
INSERT INTO stanowiska (Nazwa) VALUES ('Lakiernik'); 
ELSE 
SELECT Nazwa FROM stanowiska WHERE Nazwa ='Lakiernik'; 
END IF; 
+0

показывает ошибку: # 1064 - У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с IF (SELECT 1 FROM stanowiska WHERE Nazwa = 'Lakiernik') THEN INSERT INTO stan 'в строке 1 – Marox

+0

Я пропустил точки с запятой ... –

Смежные вопросы