Ich habe 2 Tabellen mit einer Spalte mit dem gleichen Namen. Spalte ist BAN_KEYfunktioniert in einem Fall/(Spalte zweideutig definiert) Fehler in einem anderen
, wenn ich diese Abfrage ausführen
with
t1 as
(
select *
from table1
),
t2 as
(
select *
from table2
)
t3 as
(
select *
from t1, t2
where t1.c1 = t2.c2
)
select * from t3
ich Fehlerspalte zweideutig definiert, aber wenn ich es auf diese Weise
with
t1 as
(
select *
from table1
),
t2 as
(
select *
from table2
)
select *
from t1, t2
where t1.c1 = t2.c2
Das Ergebnis wie dieses
BAN_KEY | BAN_KEY_1 | other columns
some values...
sieht
Was ist der Grund dafür?
Ich würde Gordons aufschlussreiche Antwort (die ich upvoted) hinzufügen, dass der logische Grund, warum ein CTE doppelte Spaltennamen nicht haben kann, dass, wenn dies zulässig wäre, Oracle keine Möglichkeit hätte, zu wissen, welche Duplikate du verwenden wolltest. Andererseits werden die Spalten einer äußersten Terminalabfrage von nichts referenziert, so dass Duplikate existieren, gibt es einen strittigen Punkt. –