请指出MYSQL语句问题

时间:2014-02-17 10:51:50

标签: mysql sql

 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行存在问题。 请指出我做错的地方

3 个答案:

答案 0 :(得分:0)

END IF更改为END,应该这样做。

答案 1 :(得分:0)

尝试创建SP,请看下面的

您需要将列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 ;

答案 2 :(得分:0)

您不能使用IF控制块OUTSIDE功能。这会影响您的两个查询。

将EXISTS子句转换为子查询,而不是IF函数

SELECT IF( EXISTS(
         select * from person_data where `Key`='tags' and `Value`='blogger'), true, false)