Ungültige Tabellen-alias oder Spalte Referenz b
Was ist falsch mit dieser Abfrage (im hive):
SELECT count(*) TotalCount, b.region_code
from XXX a
INNER JOIN YYY b
ON a.uid=b.uid
where a.dt = '2015-04-15'
group by b.region_code order by b.region_code
Ich denke, es sollte ziemlich einfach sein, aber bin immer dieses:
FAILED: SemanticException [Error 10004]: Line 6:32 Invalid table alias or column reference 'b': (possible column names are: _col0, _col1)
Hier ist die YYY Tabelle:
hive> desc YYY;
OK
status_code int
uid string
zip_code string
keyword string
region_code bigint
dt timestamp
channel int
und XXX Tabelle:
hive> desc XXX;
OK
group_key string
category string
uid string
dt timestamp
- Der Fehler ist, dass Ihr
YYY
Tabelle enthält nicht die Spalteregion_code
. Es würde uns helfen mehr, wenn Sie zeigen uns die Tabellenstruktur von 2 Tabellen. - Hinzugefügt von Tabellenstrukturen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen, dies zu tun:
Das problem mit deinem code ist, dass
b.region_code
existiert nicht nach derorder by
. Die alias vorhanden ist (region_code
), denn das ist in derselect
. Die qualifizierte alias nicht, weil dieb
ist nicht mehr gültig, nachdem diegroup by
. Ich denke, man könnte schreiben:Aber das wäre dumm, in diesem Fall.
Beachten Sie, dass dies ist üblich, um alle Datenbanken außer MySQL.
order by
kennt nur die Ausdrücke definiert, die in derselect
.b.region_code
ist ein Ausdruck, dessen nameregion_code
. Dies ist nicht 100% richtig, aber ich denke, es hilft, mit dem Gespür für das Verhalten, das Sie sehen.