Danke für die tollen Antworten!Auswählen mit Unterabfragen in MySQL (Unterabfragen mit ANY und IN)
Weitere Informationen
Das ist schwer zu erklären, lässt die Bühne so eingestellt ...
userActions userGroupMap
+------+--------+ +------+-------+
| user | action | | user | group |
+------+--------+ +------+-------+
| x | acted! | | x | a |
| y | acted! | | y | a |
| y | acted! | | z | b |
| z | acted! | +------+-------+
| y | acted! |
| z | acted! |
| x | acted! |
| z | acted! |
+------+--------+
Ich möchte die Aktionen der Gruppe a auswählen. Meine Idee war zu
SELECT actions, user FROM userActions
WHERE user = (SELECT user, group FROM userGroupMap WHERE group = a)
Aber offensichtlich diese Unterabfrage gibt mehr als eine Zeile zurück. Sollte ich ein JOIN verwenden?
Subquery returns more than 1 row
Danke! Mit deiner Antwort habe ich meine Ergebnisse fehlerfrei bekommen. Ich schätze auch den Hinweis auf große Tische (weshalb ich Ihre Antwort akzeptiert habe). Können Sie näher erläutern, warum Sie die Gruppe in Klammern setzen - "[group]"? – Blaine
Es gibt keinen ersichtlichen Grund, warum dies eine Unterabfrage erfordert; ein gerader innerer Join mit der Filter WHERE-Klausel sollte ebenfalls die Aufgabe erfüllen. –
@Blaine: Ich lege [group] in Klammern, weil ein Schlüsselwort und einige DBMS ausflippen, wenn Schlüsselwörter als Spalten-/Tabellennamen nicht explizit angegeben sind. Der gleiche Grund, den ich [Tabelle] in Klammern gesetzt habe. @ Jonathan Leffler: Sie haben Recht, ich denke, ich war nur abgelenkt von der Frage und es mit Unterabfragen. – achinda99