參數可以合併到 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中文網其他相關文章!