无法在MySQL上创建视图
可以在MySQL上创建此视图吗?问题在于变量。我找不到绕过它的办法无法在MySQL上创建视图,mysql,sql,view,Mysql,Sql,View,可以在MySQL上创建此视图吗?问题在于变量。我找不到绕过它的办法 CREATE VIEW vw_ranking AS SELECT rank.ativid_id, rank.user_id, b.nome, rank.quant FROM (SELECT user_id, ativid_id, quant, @ativ_rank := IF(@current_ativ = ativid_id, @ativ_rank + 1, 1) AS ativ_rank, @cur
CREATE VIEW vw_ranking AS
SELECT rank.ativid_id, rank.user_id, b.nome, rank.quant
FROM
(SELECT user_id, ativid_id, quant,
@ativ_rank := IF(@current_ativ = ativid_id, @ativ_rank + 1, 1) AS ativ_rank,
@current_ativ := ativid_id
FROM (SELECT ativid_id, user_id, COUNT(user_id) as quant FROM tb_registro_ativ
GROUP BY ativid_id, user_id) atividade
ORDER BY ativid_id, quant DESC
) rank INNER JOIN tb_usuarios b ON rank.user_id = b.user_id
WHERE ativ_rank <= 10;
不能在创建视图时定义变量 资料来源: 视图定义受以下限制: SELECT语句不能在FROM子句中包含子查询 SELECT语句不能引用系统变量或用户定义的变量 变量 在存储程序中,SELECT语句不能引用程序 参数或局部变量 SELECT语句不能引用已准备好的语句参数 定义中引用的任何表或视图都必须存在。之后 视图已创建,可以删除 定义是指。在这种情况下,使用视图会导致 错误要检查视图定义是否存在此类问题,请使用 检查表语句
我建议您改用存储过程。MySQL中的视图受到严重限制。不能在FROM子句中使用变量和子查询 你的问题很复杂。您可以在SELECT中使用子查询,这通常使计算列组成为可能,至少在小型表上是如此。在您的情况下,您可能需要一系列视图来完成所需的内容