合并两个数据库的表后,漏掉了个东西,有个字段没有做相加,想写的MYSQL的语句处理下,发现报错该如何处理CREATE PROCEDURE COUNTVAS_POINT()
BEGIN
    DECLARE accountid INT DEFAULT 1;
WHILE (accountid < 200000) DO
set accountid = accountid + 1;
DECLARE num INT;
DECLARE Vas INT;
DECLARE Min INT;
DECLARE Max INT;

SELECT Min=MIN(id),Max=MAX(id),num=COUNT(Account_ID),Vas=SUM(VAS_Point) FROM sk_vas_table WHERE Account_ID = accountid;

IF num = 2
UPDATE sk_vas_table SET VAS_Point = Vas WHERE id = Min and Account_ID = id;
DELETE FROM sk_vas_table WHERE id = Max and Account_ID = id;
END IF  
END WHILE
ENDmysql存储数据库

解决方案 »

  1.   

    提示什么
    IF num = 2 then
     UPDATE sk_vas_table SET VAS_Point = Vas WHERE id = Min and Account_ID = id;
     DELETE FROM sk_vas_table WHERE id = Max and Account_ID = id;
     END IF  ;
     END WHILE;
      

  2.   

    把 
    DECLARE num INT;
    DECLARE Vas INT;
    DECLARE Min INT;
    DECLARE Max INT;
    放到DECLARE accountid INT DEFAULT 1;语句后面去,
      

  3.   

    CREATE PROCEDURE COUNTVAS_POINT()
    BEGIN
        DECLARE accountid INT DEFAULT 1;
        DECLARE num INT;
        DECLARE Vas INT;
        DECLARE Min INT;
        DECLARE Max INT;    WHILE (accountid < 200000) DO
        set accountid = accountid + 1;    SELECT Min=MIN(id),Max=MAX(id),num=COUNT(Account_ID),Vas=SUM(VAS_Point) FROM sk_vas_table    WHERE Account_ID = accountid;    IF num = 2
            UPDATE sk_vas_table SET VAS_Point = Vas WHERE id = Min and Account_ID = accountid;
            DELETE FROM sk_vas_table WHERE id = Max and Account_ID = accountid;
        END IF  
        END WHILE
    END提示第15行报错:
    [Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to you MySQL server version for the right syntax to use near 'UPDATE sk_vas_table SET VAS_Point = Vas WHERE id = Min and Account_ID = accounti' at line 15
      

  4.   

    12.8.6.1. IF Statement
    IF search_condition THEN statement_list
        [ELSEIF search_condition THEN statement_list] ...
        [ELSE statement_list]
    END IF
    THEN关键字哪去了?
      

  5.   

    CREATE PROCEDURE COUNTVAS_POINT()
    BEGIN
        DECLARE MinAcc INT;
        DECLARE MaxAcc INT;
        DECLARE accountid INT;
        DECLARE num INT;
        DECLARE Vas INT;
        DECLARE Min INT;
        DECLARE Max INT;
        
       SELECT MinAcc=MIN(ID),MaxAcc=MAX(ID) FROM sk_vas_table;
       SET accountid = MinAcc - 1;    WHILE (accountid <  MaxAcc ) DO
        set accountid = accountid + 1;    SELECT Min=MIN(id),Max=MAX(id),num=COUNT(Account_ID),Vas=SUM(VAS_Point) FROM sk_vas_table    WHERE Account_ID = accountid;    IF num = 2 THEN
            UPDATE sk_vas_table SET VAS_Point = Vas WHERE id = Min and Account_ID = accountid;
            DELETE FROM sk_vas_table WHERE id = Max and Account_ID = accountid;
        END IF;
        END WHILE;
    END
      

  6.   

    报错归类整理:
    1.MYSQL语句必须加‘;’
    2.IF 后面需要有THEN