DECLARE @ICOUNT INT
SELECT @ICOUNT = COUNT(*) FROM TABLE1 WHERE COLUMN1 = 1--此处条件不是一个是多个。而且不固定。IF @ICOUNT = 1 
  UPDATE TABLE1 SET COLUMN2=2 WHENRE COLUMN1 =1
ELSE
  INSERT INTO TABLE1 (COLUMN1,COLUMN2)VALUES(1,2)
上面的TSQL逻辑,如何转换为Mysql中支持的语句?

解决方案 »

  1.   

    DECLARE ICOUNT INT;
    SELECT COUNT(*) into ICOUNT FROM TABLE1 WHERE COLUMN1 = 1 limit 1;--此处条件不是一个是多个。而且不固定。IF ICOUNT = 1 then
      UPDATE TABLE1 SET COLUMN2=2 WHENRE COLUMN1 =1;
    ELSE
      INSERT INTO TABLE1 (COLUMN1,COLUMN2)VALUES(1,2);
    end if;mysql只能把以上逻辑写到存储过程里面
      

  2.   

    UPDATE TABLE1 SET COLUMN2=2 WHENRE exists(select  1
    FROM TABLE1 WHERE COLUMN1=1);
    INSERT INTO TABLE1 (COLUMN1,COLUMN2) ;
    select distinct 1,2 FROM TABLE1 WHERE not exists(select  1
    FROM TABLE1 WHERE COLUMN1=1);
      

  3.   

    DECLARE vICOUNT INT;
    SELECT vICOUNT := COUNT(*) FROM TABLE1 WHERE COLUMN1 = 1;IF vICOUNT = 1 THEN
      UPDATE TABLE1 SET COLUMN2=2 WHENRE COLUMN1 =1;
    ELSE
      INSERT INTO TABLE1 (COLUMN1,COLUMN2)VALUES(1,2);
    END IF
      

  4.   

    sp
    delimiter $$
    create procedure tt(aa varchar(100))
    begin
    set @asql=concat('SELECT COUNT(*) into @ICOUNT FROM TABLE1 WHERE ',
    aa);
    prepare stml from @asql;
    execute stml;
    IF @ICOUNT = 1 then
       UPDATE TABLE1 SET COLUMN2=2 WHENRE COLUMN1 =1;
     ELSE
       INSERT INTO TABLE1 (COLUMN1,COLUMN2)VALUES(1,2);
     end if;
    end$$
    delimiter ;call tt(' COLUMN1 = 1')