我试图找到一个没有运气的解决方案,我想创建一个包含用户定义变量的查询视图。
我做了什么
$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
我该怎么做?
答案 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(每个变量一个)。