Heim >Datenbank >MySQL-Tutorial >Wie behebe ich den SQL-Fehler „Spaltenreferenz ‚id' ist mehrdeutig'?

Wie behebe ich den SQL-Fehler „Spaltenreferenz ‚id' ist mehrdeutig'?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2025-01-18 07:36:08821Durchsuche

How to Resolve SQL's

Beheben des SQL-Fehlers „Mehrdeutige Spaltenreferenz“: Der Fall der doppelten „id“-Spalte

Beim Erstellen von SELECT-Abfragen mit mehreren Tabellen mit gemeinsamen Spaltennamen (z. B. einer allgegenwärtigen „id“-Spalte) kann der gefürchtete Fehler „Spaltenreferenz ‚id‘ ist mehrdeutig“ auftreten. Dies geschieht, weil SQL nicht weiß, welche Tabellenspalte „id“ Sie abrufen möchten.

Die Lösung ist unkompliziert: Qualifizieren Sie Ihre Spaltennamen immer mit ihren jeweiligen Tabellenaliasen oder vollständigen Tabellennamen.

Wenn Ihre Abfrage beispielsweise v_groups (Alias ​​als vg) und people2v_groups (Alias ​​als p2vg) verknüpft, die beide eine „id“-Spalte enthalten, ergibt sich die mehrdeutige Abfrage:

<code class="language-sql">SELECT (id, name) -- Ambiguous!
FROM v_groups vg
INNER JOIN people2v_groups p2vg
  ON vg.id = p2vg.v_group_id
WHERE p2vg.people_id = 0;</code>

sollte umgeschrieben werden, um die Tabellenquelle für die Spalte „id“ explizit anzugeben:

<code class="language-sql">SELECT (vg.id, name) -- Unambiguous!
FROM v_groups vg
INNER JOIN people2v_groups p2vg
  ON vg.id = p2vg.v_group_id
WHERE p2vg.people_id = 0;</code>

Durch die Verwendung von vg.id geben wir deutlich an, dass wir die „id“ aus der Tabelle v_groups haben möchten. Dies beseitigt die Mehrdeutigkeit und stellt sicher, dass Ihre Abfrage korrekt ausgeführt wird.

Kurz gesagt: Wenn Sie mit mehreren Tabellen arbeiten, die Spaltennamen teilen, stellen Sie Ihren Spaltennamen immer die entsprechenden Tabellenaliasnamen (oder vollständigen Tabellennamen) voran, um Mehrdeutigkeiten zu vermeiden und genaue Abfrageergebnisse zu gewährleisten.

Das obige ist der detaillierte Inhalt vonWie behebe ich den SQL-Fehler „Spaltenreferenz ‚id' ist mehrdeutig'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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