mysql使用包含变量的mysql查询创建视图
Posted
技术标签:
【中文标题】mysql使用包含变量的mysql查询创建视图【英文标题】:mysql create view with mysql query that contains variable 【发布时间】:2013-04-29 12:32:08 【问题描述】:我想使用以下语法来创建 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
我该如何解决这个问题?谢谢一百万。
【问题讨论】:
【参考方案1】:如CREATE VIEW
Syntax 中所述:
视图定义受以下限制:
[ <strong><em>deletia</em></strong> ]
SELECT
语句不能引用系统或用户变量。
【讨论】:
【参考方案2】:认为您需要使用子选择来计算记录数。
类似这样的:-
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% 确定这一点,因为我怀疑您目前如何订购商品以获取数量。
【讨论】:
【参考方案3】:对于变量使用,尝试使用存储过程或自定义函数
【讨论】:
以上是关于mysql使用包含变量的mysql查询创建视图的主要内容,如果未能解决你的问题,请参考以下文章