参数可以合并到 MySQL 视图中吗?
初始查询尝试创建带有参数的视图,但 MySQL 禁止这样做。所提出的解决方法包括创建一个函数来检索参数值,然后将其合并到视图的定义中。然而,由于其复杂性和缺乏优雅性,这种方法被认为不能令人满意。
主要目标是创建一个可以直接使用参数的视图,以便于数据分组和过滤。考虑 MergedDenialsViewHelper 和 MergedDenials 视图。为了在定义的时间范围内显示对特定用户和功能的拒绝,使用了一个参数:
SET @DenialMergingTime := 5; SELECT GroupTime, FeatureId, UserHostId, MultiplicitySum FROM MergedDenials WHERE UserHostId IN (1, 2) AND FeatureId IN (3, 4);
此方法虽然有效,但由于其复杂性而存在问题。存在另一种方法:创建一个函数来返回所需的参数值。
create function p1() returns INTEGER DETERMINISTIC NO SQL return @p1;
随后,可以使用合并的函数创建一个视图:
create view h_parm as select * from sw_hardware_big where unit_id = p1() ;
使用此视图,可以直接利用参数:
select s.* from (select @p1:=12 p) parm , h_parm s;
这个方案省去了之前的解决方法,简化了整体流程,增强了代码的可读性。
以上是MySQL视图可以接受参数进行动态数据过滤吗?的详细内容。更多信息请关注PHP中文网其他相关文章!