Benutzer-IDs mit mehreren Rollen (1, 2 und 3) abrufen
Diese Anleitung zeigt, wie Sie eindeutige Benutzer-IDs mit den Rollen 1, 2 und 3 effizient aus einer Tabelle mit den Spalten userid
und roleid
auswählen. Wir werden zwei effektive SQL-Abfragemethoden untersuchen.
Methode 1: Aggregierte Abfrage mit HAVING-Klausel
Dieser Ansatz verwendet Aggregation und Filterung:
<code class="language-sql">SELECT userid FROM userrole WHERE roleid IN (1, 2, 3) GROUP BY userid HAVING COUNT(*) = 3;</code>
Die Abfrage filtert nach Zeilen, in denen roleid
1, 2 oder 3 ist. Anschließend gruppiert sie die Ergebnisse nach userid
und verwendet HAVING COUNT(*) = 3
, um sicherzustellen, dass nur Benutzer mit allen drei Rollen enthalten sind.
Methode 2: Self-JOIN-Abfrage
Alternativ kann ein Self-JOIN das gleiche Ergebnis erzielen:
<code class="language-sql">SELECT t1.userid FROM userrole t1 INNER JOIN userrole t2 ON t1.userid = t2.userid AND t2.roleid = 2 INNER JOIN userrole t3 ON t1.userid = t3.userid AND t3.roleid = 3 WHERE t1.roleid = 1;</code>
Diese Abfrage verknüpft die Tabelle userrole
dreimal mit sich selbst. Es stellt sicher, dass ein userid
roleid
1 hat, und verbindet sich dann, um dasselbe userid
mit roleid
2 und schließlich roleid
3 zu finden. Das INNER JOIN
stellt sicher, dass nur Benutzer mit allen drei Rollen zurückgegeben werden. Diese Methode ist möglicherweise weniger effizient als der Aggregatansatz für sehr große Tabellen.
Das obige ist der detaillierte Inhalt vonWie wähle ich Benutzer-IDs mit bestimmten Rollen (1, 2 und 3) aus einer Tabelle aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!