2014-02-17 3 views
0
IF EXISTS(select * from person_data where `Key`='tags' and `Value`='blogger') 
    begin 
    UPDATE person_data SET `Value`= 'aaaaaaa' 
    end 
    else 
    begin 
    INSERT INTO person_data(Id,`Key`,`Value`,Person_id) 
    SELECT IFNULL(MAX(Id)+1,1),'aaa','bbb',1 FROM person_data 
    end if; 

он держит жалуются есть проблема в строке 1. пожалуйста, указать, где я сделал неправильноMYSQL вопросы заявление пожалуйста указывают

+0

ошибка: Код ошибки 1064, SQL состояние 42000: У вас ошибка в вашем SQL синтаксиса; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с IF EXISTS (выберите * from person_data, где 'Key' = 'tags' и' Value' = 'blogger') be 'в строке 1 – Max

+0

You нужно поместить ваш столбец KEY в обратные тики (''), поскольку KEY - это ключевое слово в MySQL –

ответ

0

Изменение END IF в END, что должен это сделать.

0

Попробуйте создать СП, посмотрите на ниже

Вы должны поместить вашу колонку KEY в спине клещами (``), как KEY это ключевое слово в MySQL

DELIMITER $$ 

CREATE 
    PROCEDURE `InsertOrUpdate`() 
    BEGIN 

    SELECT COUNT(*) INTO ifexists FROM person_data WHERE KEY='tags' AND VALUE='blogger'; 

    IF ifexists !=0 THEN 
     UPDATE person_data SET VALUE= 'aaaaaaa'; 
    ELSE 
     INSERT INTO person_data(Id,KEY,VALUE,Person_id) 
     SELECT IFNULL(MAX(Id)+1,1),'aaa','bbb',1 
     FROM person_data ; 
    END IF; 
    END$$ 

DELIMITER ; 
0

Вы не можете использовать Контрольный блок IF ВНЕШНИЙ функции. Таким образом, это влияет на оба ваших запроса.

Поверните СУЩЕСТВУЕТ положение в подзапроса вместо внутри функции IF

SELECT IF(EXISTS(
     select * from person_data where `Key`='tags' and `Value`='blogger'), true, false) 
Смежные вопросы