2

我有以下用于创建 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

我怎样才能解决这个问题?太感谢了。

4

3 回答 3

4

CREATE VIEW语法中所述:

视图定义受以下限制:

[ deletia ]

  • SELECT语句不能引用系统或用户变量。
于 2013-04-29T12:35:37.173 回答
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% 确定这一点,因为我怀疑你现在如何订购东西来获得你的计数。

于 2013-05-01T08:24:44.803 回答
0

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

于 2020-11-02T09:45:23.383 回答