Ich habe 2 Tische. tbl_names
und tbl_section
das hat beide das id
Feld in ihnen. Wie wähle ich das id
Feld aus, da immer folgende Fehlermeldung angezeigt wird:
1052: Column 'id' in field list is ambiguous
Hier ist meine Frage:
SELECT id, name, section
FROM tbl_names, tbl_section
WHERE tbl_names.id = tbl_section.id
Ich könnte einfach alle Felder auswählen und den Fehler vermeiden. Aber das wäre eine Leistungsverschwendung. Was soll ich machen?
INNER JOIN
es seit Einführung von SQL-92 für "abgeschrieben"NATURAL JOIN
.In Ihrer
SELECT
Erklärung müssen Sie Ihrer ID die Tabelle voranstellen, aus der Sie sie auswählen möchten.ODER
quelle
id
Felder zurück. Das OP sagt: "Wählen Sie einfach alle Felder aus und vermeiden Sie den Fehler." Und ich stimme nicht für die ANSI-89-Syntax.Sie würden dies tun, indem Sie einen vollständig qualifizierten Namen angeben, z.
Welches würde Ihnen die ID von tbl_names geben
quelle
FROM
Klausel...FROM tbl_names tbl_names, tbl_section tbl_section WHERE...
- genau das tut der Parser, um eine Bereichsvariable zu generieren.Die einfachste Lösung ist ein Join mit
USING
stattON
. Auf diese Weise "weiß" die Datenbank, dass beideid
Spalten tatsächlich gleich sind, und wählt dies nicht aus:Wenn
id
der einzige gebräuchliche Spaltenname intbl_names
und isttbl_section
, können Sie sogar Folgendes verwendenNATURAL JOIN
:Siehe auch: https://dev.mysql.com/doc/refman/5.7/en/join.html
quelle
Was Sie hier wahrscheinlich wirklich tun möchten, ist, den Gewerkschaftsoperator wie folgt zu verwenden:
Hier sind die Dokumente dazu https://dev.mysql.com/doc/refman/5.0/en/union.html
quelle
Es gibt bereits viele Antworten auf Ihre Frage. Sie können es auch so machen. Sie können Ihrer Tabelle einen Aliasnamen geben und diesen in der Auswahlabfrage wie folgt verwenden:
quelle
Wenn das Format der IDs in den beiden Tabellen unterschiedlich ist, möchten Sie sie verbinden. Daher können Sie auswählen, ob eine ID aus einer Haupttabelle verwendet werden soll. Sagen Sie, wenn Sie
table_customes
und habentable_orders
, und die ID für Bestellungen lautet " 101 ". " 102 " ... " 110 ", verwenden Sie einfach eine für Kundenquelle
quelle