Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Mencari Pengguna dengan Cekap dengan Ketiga-tiga ID Peranan Yang Ditentukan?

Bagaimana untuk Mencari Pengguna dengan Cekap dengan Ketiga-tiga ID Peranan Yang Ditentukan?

Mary-Kate Olsen
Lepaskan: 2025-01-19 17:02:08
asal
1003 orang telah melayarinya

How to Efficiently Find Users with All Three Specified Role IDs?

Pilih nilai merentas baris yang memenuhi syarat unik

Soalan ini menerangkan senario di mana kita mempunyai jadual dengan dua lajur: userid dan roleid. Matlamatnya adalah untuk mendapatkan id pengguna unik yang mempunyai ketiga-tiga roleid yang ditentukan.

Salah satu cara ialah menggabungkan pengagregatan dan penapisan:

<code class="language-sql">SELECT userid
FROM userrole
WHERE roleid IN (1, 2, 3)
GROUP BY userid
HAVING COUNT(1) = 3</code>
Salin selepas log masuk

Pertanyaan ini mengumpulkan hasil mengikut userid, mengira kejadian setiap roleid untuk setiap userid. Klausa HAVING memastikan bahawa hanya userid dengan tiga roleid berbeza dipilih.

Walau bagaimanapun, pendekatan lain menggunakan cantuman mungkin lebih cekap, terutamanya apabila bekerja dengan set data yang besar:

<code class="language-sql">SELECT t1.userid
FROM userrole t1
JOIN userrole t2 ON t1.userid = t2.userid AND t2.roleid = 2
JOIN userrole t3 ON t2.userid = t3.userid AND t3.roleid = 3
AND t1.roleid = 1</code>
Salin selepas log masuk

Pertanyaan ini menggunakan cantuman bersarang untuk memilih id pengguna berdasarkan roleid yang ditentukan. Syarat gabungan luar menyemak kehadiran setiap roleid untuk setiap userid, dan syarat akhir AND memastikan bahawa userid yang dipilih mempunyai ketiga-tiga roleid yang ditentukan.

Bergantung pada pengedaran data dan ciri prestasi sistem pangkalan data asas, mana-mana pendekatan mungkin lebih sesuai. Adalah disyorkan untuk menguji kedua-dua kaedah untuk menentukan penyelesaian terbaik untuk senario khusus anda.

Atas ialah kandungan terperinci Bagaimana untuk Mencari Pengguna dengan Cekap dengan Ketiga-tiga ID Peranan Yang Ditentukan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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