此查询有什么问题?我收到错误消息,因为“此服务器版本在此位置的选择无效,期望:'(',WITH”

时间:2019-12-11 19:31:33

标签: mysql

我的查询

错误:选择在此服务器版本的此位置无效,期望:'(',WITH

    set @prev="SAME";
    select `date`, `COL1` , `COL2` ,
                if( `COL1`>`COL2` and ( (@prev="SAME") or (@prev="UP") ) ) then
                    "DOWN", @prev:="DOWN"
                else if( `COL1` < `COL2` and ( (@prev="SAME") or (@prev="DOWN") ) ) then
                    "UP", @prev:="UP"
                else
                    "SAME"
                END IF
                as 'sign' 
      from 
          temp;

2 个答案:

答案 0 :(得分:1)

您不能在查询中使用IF...THEN。您可以使用IF(condition, truevalue, falsevalue)CASE WHEN condition THEN value1 WHEN condition2 THEN value2 ELSE something END

IF...THEN是过程语法。

答案 1 :(得分:0)

以下是答案,它确实有效:

    set @prev="SAME";
    select date, COL1 , COL2 , 
      CASE 
      WHEN( COL1>COL2 and ( (@prev="SAME") or (@prev="UP") ) )
      THEN 
        @prev:="DOWN"
      WHEN( COL1 < COL2 and ( (@prev="SAME") or (@prev="DOWN") ) )
      THEN
        @prev:="UP" 
      ELSE "SAME"
      END as 'sign' 
    from
      temp;