Rumah > pangkalan data > tutorial mysql > Bolehkah MySQL Views Menerima Parameter untuk Penapisan Data Dinamik?

Bolehkah MySQL Views Menerima Parameter untuk Penapisan Data Dinamik?

Linda Hamilton
Lepaskan: 2024-12-05 10:39:15
asal
462 orang telah melayarinya

Can MySQL Views Accept Parameters for Dynamic Data Filtering?

Bolehkah Parameter Digabungkan ke dalam Paparan MySQL?

Pertanyaan awal cuba mencipta paparan dengan parameter, tetapi MySQL melarangnya. Penyelesaian yang dibentangkan melibatkan mencipta fungsi untuk mendapatkan semula nilai parameter, kemudian memasukkannya ke dalam definisi paparan. Walau bagaimanapun, pendekatan ini dianggap tidak memuaskan kerana kerumitan dan kekurangan keanggunannya.

Matlamat utama adalah untuk mencipta paparan di mana parameter boleh digunakan secara langsung, memudahkan pengumpulan dan penapisan data. Pertimbangkan pandangan MergedDenialsViewHelper dan MergedDenials. Untuk memaparkan penafian bagi pengguna dan ciri tertentu dalam tempoh masa yang ditetapkan, parameter digunakan:

SET @DenialMergingTime := 5;
SELECT GroupTime, FeatureId, UserHostId, MultiplicitySum FROM MergedDenials WHERE UserHostId IN (1, 2) AND FeatureId IN (3, 4);
Salin selepas log masuk

Kaedah ini, walaupun berkesan, bermasalah kerana sifatnya yang berbelit-belit. Pendekatan alternatif wujud: mencipta fungsi untuk mengembalikan nilai parameter yang diingini.

create function p1() returns INTEGER DETERMINISTIC NO SQL return @p1;
Salin selepas log masuk

Seterusnya, paparan boleh dibuat dengan fungsi yang digabungkan:

create view h_parm as
select * from sw_hardware_big where unit_id = p1() ;
Salin selepas log masuk

Dengan paparan ini di tempatnya , parameter boleh digunakan terus:

select s.* from (select @p1:=12 p) parm , h_parm s;
Salin selepas log masuk

Penyelesaian ini menghapuskan keperluan untuk penyelesaian sebelumnya, memudahkan keseluruhan proses dan mempertingkatkan kebolehbacaan kod.

Atas ialah kandungan terperinci Bolehkah MySQL Views Menerima Parameter untuk Penapisan Data Dinamik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan