IF((@authority=2 OR @authority=3) AND (@originalAuthority<>@authority OR @originalAuthority IS NULL))
这是sqlserver的写法转成mysql这样对吗?IF ($authority=2 OR $authority=3) AND ($originalAuthority<>$authority OR $originalAuthority IS NULL) then....mysql的括号也能改变默认的计算顺序吧?这是

解决方案 »

  1.   

    mysql的括号也能改变默认的计算顺序吧?

    IF((@authority=2 OR @authority=3) AND (@originalAuthority<>@authority OR @originalAuthority IS NULL))
     这是sqlserver的写法转成mysql这样对吗?
    少1个THEN
      

  2.   


    哦,谢谢,
    IF ($authority=2 OR $authority=3) AND ($originalAuthority<>$authority OR $originalAuthority IS NULL) then就是这样对吗?mysql不用if后面的总的大括号
      

  3.   

    mysql中的变量要声明 OR 前面+@直接使用
    $authority->@authority
      

  4.   


    $authority我在前面定义了,declare $authority int;您说的 “前面+@直接使用”,什么意思,不用定义吗?不如我下面一句话
    DECLARE $co INT;
    SELECT COUNT(*) INTO $co FROM auth WHERE roomId=roomId_v AND authority=auth_v;
    IF $co>=10 THEN
    ......可以改成如下吗?
    SELECT COUNT(*) INTO @co FROM auth WHERE roomId=roomId_v AND authority=auth_v;
    IF @co>=10 THEN
    ......
    这样可以吗?没有定义@co
      

  5.   

    SELECT COUNT(*) INTO @co FROM auth WHERE roomId=roomId_v AND authority=auth_v;
     IF @co>=10 THEN可以
    不用定义@co
      

  6.   


    非常感谢,那没定义类型,是不是查出来是什么字段类型就算什么类型,类型取决于表定义的类型,COUNT(*)是int,那个@co就是int了?
      

  7.   

    自行测试一下不就知道了
    默认为NULL
      

  8.   


    非常感谢,再冒昧的问一句,怎么看变量类型呢? 难道有typeof() 之类的函数
      

  9.   

    MYSQL 中IF 的语法格式可以在MYSQL的官方免费手册中看到.IF .. THEN
    END IF
    MYSQL中的数据类型无法查看,只能在定义的时候确定。