Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法在MySQL上创建视图_Mysql_Sql_View - Fatal编程技术网

无法在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

可以在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,
    @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中使用子查询,这通常使计算列组成为可能,至少在小型表上是如此。在您的情况下,您可能需要一系列视图来完成所需的内容