Heim > Fragen und Antworten > Hauptteil
Ich habe derzeit eine sehr einfache MySQL-Abfrage, die so aussieht:
SET @recordID = 60749; SELECT netID, ID, recordID, team FROM NetLog WHERE recordID = @recordID;
Die Variable „recordID“ ist für jede Zeile eindeutig und die einzige verfügbare Variable, um die gewünschte Zeile zu erhalten.
Aber jetzt muss ich auch alle anderen Zeilen zurückgeben, die denselben „Team“-Wert wie die ursprüngliche Zeile haben. Ich habe mehrere Varianten ausprobiert, aber es wird immer „#1242 – Unterabfrage hat mehr als eine Zeile zurückgegeben“ zurückgegeben.
SET @recordID = 60749; SELECT a.netID, a.ID, a.recordID, a.team, (SELECT b.recordID FROM NetLog b WHERE b.team = a.team AND b.recordID <> a.recordID) as rID FROM NetLog a WHERE a.recordID = @recordID;
Ich möchte dies nach Möglichkeit in einer Abfrage tun.
Kann mir jemand den richtigen Weg weisen?
P粉3788901062023-09-14 11:42:17
使用UNION
来组合查询。
WITH mainRow AS ( SELECT netID, ID, recordID, team FROM NetLog WHERE recordID = @recordID ) SELECT * FROM mainRow UNION SELECT b.netID, b.ID, b.recordID, b.team FROM NetLog AS b JOIN mainRow AS a ON b.team = a.team AND b.recordID <> a.recordID