ungültige Bezeichner Fehler in oracle aufgrund der Spalte alias
Ich habe eine Abfrage wie folgt
select t.col1,
t.col2,
(select count(col1)
from tab
where col1 = t.col1
and col2 = t.col2
) as col3
from tab t
where col3 > 1
Die Abfrage gibt eine 'col3 Ungültiger Bezeichner" error.
Ich habe versucht, verschiedene Variationen definieren Sie den alias, die ich gegeben habe und die Fehler die ich bekomme, wenn ich Sie benutzen
-
select t.col1, t.col2, (select count(col1) from tab where col1 = t.col1 and col2 = t.col2 ) as "col3" from tab t where col3 > 1
Fehler: col3 ungültige Bezeichner
-
select t.col1, t.col2, (select count(col1) from tab where col1 = t.col1 and col2 = t.col2 ) as 'col3' from tab t where [col3] > 1
Fehler: Fehlender Ausdruck nach, wo
-
select t.col1, t.col2, (select count(col1) from tab where col1 = t.col1 and col2 = t.col2 ) "col3" from tab t where [col3] > 1
Fehler: Fehlender Ausdruck nach, wo
Bitte erklären Sie mir, was die Fehler sind über
P. S. ich weiß nicht warum, ich bin nicht in der Lage, markieren Sie die Abfrage Beispiele als code hier ein. Ich entschuldige mich für die schlechte Lesbarkeit der Abfragen
Danke @a_horse_with_no_name für das Bearbeiten
Es dauerte eine Weile, mich zu entdecken, dass trick. Wenn Sie "inside" einer Liste (z.B. mit
Es dauerte eine Weile, mich zu entdecken, dass trick. Wenn Sie "inside" einer Liste (z.B. mit
*
oder #
) Sie müssen Gedankenstrich durch 8 Räume machen es zu einem "code-block" - nicht mit 4 Räumen, wie Sie normalerweise tun.
InformationsquelleAutor Setsuna F. Seiei | 2014-03-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihr Hauptproblem ist, dass man nicht auf eine Spalte zugegriffen wird-alias auf den gleichen "nesting level". Um der Lage sein, um die Verwendung des alias müssen Sie wickeln die gesamte Abfrage in eine abgeleitete Tabelle:
Ihrem "nummerierten" Beispiele nicht funktionieren würde, aus zwei Gründen: Erstens aus den oben genannten Gründen und zweitens, weil die Bezeichner, die zitiert werden doppelte Anführungszeichen benutzt werden, groß-und Kleinschreibung. So
"col3"
ist eine andere Spalte name als"Col3"
. Als Oracle Falten ohne Anführungszeichen Bezeichner in Großbuchstaben (nach den Anforderungen des SQL-Standards)col3
wäre äquivalent zu"COL3"
Schließlich:
[col3]
ist eine ungültige Bezeichner in SQL-unabhängig davon, ob Sie es als Spaltenalias oder nicht. Bezeichner müssen in Anführungszeichen mit doppelten Anführungszeichen. Diese eckigen Klammern sind ungültig SQLInformationsquelleAutor a_horse_with_no_name
Können Sie eine Spalte ein alias in eine
WHERE
- Klausel, nur in einemORDER BY
- Klausel. Sie haben zwei Optionen.Einer, Sie können wickeln Sie die gesamte Abfrage in einem anderen wählen und dann filter auf col3:
Oder Sie können wiederholen Sie den Skalar-Unterabfrage in der
WHERE
Klausel:Schlage ich vor, die option 1 mich.
InformationsquelleAutor Wolf