Heim > Datenbank > MySQL-Tutorial > Wie kann man Benutzer mit allen drei angegebenen Rollen-IDs effizient finden?

Wie kann man Benutzer mit allen drei angegebenen Rollen-IDs effizient finden?

Mary-Kate Olsen
Freigeben: 2025-01-19 17:02:08
Original
1003 Leute haben es durchsucht

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

Wählen Sie zeilenübergreifend Werte aus, die eindeutige Bedingungen erfüllen

Diese Frage beschreibt ein Szenario, in dem wir eine Tabelle mit zwei Spalten haben: Benutzer-ID und Rollen-ID. Das Ziel besteht darin, eine eindeutige Benutzer-ID abzurufen, die über alle drei angegebenen Rollen-IDs verfügt.

Eine Möglichkeit besteht darin, Aggregation und Filterung zu kombinieren:

<code class="language-sql">SELECT userid
FROM userrole
WHERE roleid IN (1, 2, 3)
GROUP BY userid
HAVING COUNT(1) = 3</code>
Nach dem Login kopieren

Diese Abfrage gruppiert die Ergebnisse nach Benutzer-ID und zählt das Vorkommen jeder Rollen-ID für jede Benutzer-ID. Die HAVING-Klausel stellt sicher, dass nur Benutzer-IDs mit drei verschiedenen Rollen-IDs ausgewählt werden.

Allerdings kann ein anderer Ansatz mit Verknüpfungen effizienter sein, insbesondere bei der Arbeit mit großen Datensätzen:

<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>
Nach dem Login kopieren

Diese Abfrage verwendet verschachtelte Verknüpfungen, um Benutzer-IDs basierend auf der angegebenen Rollen-ID auszuwählen. Die äußere Verknüpfungsbedingung prüft, ob jede Rollen-ID für jede Benutzer-ID vorhanden ist, und die abschließende UND-Bedingung stellt sicher, dass die ausgewählte Benutzer-ID über alle drei angegebenen Rollen-IDs verfügt.

Abhängig von der Datenverteilung und den Leistungsmerkmalen des zugrunde liegenden Datenbanksystems kann jeder Ansatz besser geeignet sein. Es wird empfohlen, beide Methoden zu testen, um die beste Lösung für Ihr spezifisches Szenario zu ermitteln.

Das obige ist der detaillierte Inhalt vonWie kann man Benutzer mit allen drei angegebenen Rollen-IDs effizient finden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage