Heim  >  Fragen und Antworten  >  Hauptteil

Wie kann ich mehrere Datenzeilen zurückgeben, wenn für die Where-Klausel nur eine eindeutige Variable verfügbar ist?

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粉094351878P粉094351878402 Tage vor474

Antworte allen(1)Ich werde antworten

  • P粉378890106

    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

    Antwort
    0
  • StornierenAntwort