创建包含变量或参数的查询视图

时间:2014-08-21 17:39:09

标签: mysql

我试图找到一个没有运气的解决方案,我想创建一个包含用户定义变量的查询视图。

我做了什么

        $mdb->query("SET @rank = 1, @seq = 1, @last = null") or die(mysqli_error($mdb)); 

        $mdb->query("CREATE view  midterm_view AS 
                      SELECT m.*, @rank := if(@last = average, @rank, @seq) AS rank, 
                       @seq := @seq +1, @last := average
                FROM 
                (SELECT *, AVG(score) as average 
                      from midterm_result 
                      group by student_id) m") or die(mysqli_error($mdb)); 

我收到此错误

       View's SELECT contains a variable or parameter

我该怎么做?

2 个答案:

答案 0 :(得分:0)

您无法使用可变参数创建视图,而是使用stored procedures

答案 1 :(得分:0)

更好的是,您可以通过创建一个函数来从会话变量获取值来以简单的方式将参数传递给您的视图。 有关该技术,请参阅https://www.stackoverflow.com/questions/14511760。这是我可能希望在之后模式化的创建函数的副本。

DELIMITER //

CREATE FUNCTION fn_getcase_id()    
RETURNS MEDIUMINT(11)
DETERMINISTIC NO SQL
BEGIN
# see stackoverflow.com/questions/14511760 and read ALL the info TWICE or MORE.  wh 04/13/2017
    RETURN @sv_case_id;
END//

DELIMITER ;

您需要创建一个类似的FN(每个变量一个)。