我想使用以下语法创建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
我该如何解决这个问题?万分感谢。
答案 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)
对于变量使用,请尝试使用存储过程或自定义函数