mysql使用包含变量的mysql查询创建视图

时间:2013-04-29 12:32:08

标签: mysql variables view

我想使用以下语法创建MySQL视图:

create view `ViewName` as (select
              v_starting.callingname,
              v_starting.geofence,
              v_starting.`updatetime`,
              @lastGroup := @lastGroup + if( @lastAddress = v_starting.geofence 
                                         AND @lastVehicle = v_starting.callingname, 0, 1 ) as GroupSeq,
              @lastVehicle := v_starting.callingname as justVarVehicleChange,
              @lastAddress := v_starting.geofence as justVarAddressChange
           from
              v_starting,
              ( select @lastVehicle := '',
                       @lastAddress := '',
                       @lastGroup := 0 ) SQLVars

           order by
              v_starting.`updatetime` )

此操作失败并显示错误:

#1351 - View's SELECT contains a variable or parameter

我该如何解决这个问题?万分感谢。

3 个答案:

答案 0 :(得分:3)

正如CREATE VIEW Syntax所述:

  

视图定义受以下限制:

     

[ deletia ]

     
      
  • SELECT语句不能引用系统或用户变量。
  •   

答案 1 :(得分:1)

认为您需要使用子选择来计算记录。

这样的事情: -

SELECT v_starting.callingname,
              v_starting.geofence,
              v_starting.`updatetime`,
              Sub1.PrevRecCount ASGroupSeq
FROM v_starting
INNER JOIN (SELECT a.updatetime, COUNT(DISTINCT b.callingname, b.geofence ) AS PrevRecCount
            FROM v_starting a 
            LEFT OUTER JOIN v_starting b
            ON a.updatetime > b.updatetime
            AND a.callingname != b.callingname
            AND a.geofence != b.geofence
            GROUP BY a.updatetime) Sub1

不是100%肯定这一点,因为我对你如何订购目前的计数表示怀疑。

答案 2 :(得分:0)

对于变量使用,请尝试使用存储过程或自定义函数