如何处理sql列名引用中不明确的列引用?

如何处理sql列名引用中不明确的列引用?,sql,join,pyspark,databricks,azure-databricks,Sql,Join,Pyspark,Databricks,Azure Databricks,我有一些代码: CREATE OR REPLACE TEMPORARY VIEW cctv_join_1 AS SELECT * FROM cctv1_details AS A LFET JOIN cctv3_details AS B ON (A.CDE_WR = B.CDE_WR) AND A.CDE_dist = B.CDE_dist 然后我试试看 CREATE OR REPLACE TEMPORARY VIEW cctv_join_2 AS (S

我有一些代码:

CREATE OR REPLACE TEMPORARY VIEW cctv_join_1  
AS
    SELECT * 
    FROM cctv1_details AS A 
    LFET JOIN cctv3_details AS B ON (A.CDE_WR = B.CDE_WR) AND A.CDE_dist = B.CDE_dist
然后我试试看

CREATE OR REPLACE TEMPORARY VIEW cctv_join_2  
AS
   (SELECT * 
    FROM cctv_join_1 AS A
    LEFT JOIN cctv5_details AS B ON (A.CDE_WR = B.CDE_WR) AND (A.CDE_dist = B.CDE_dist))
但我犯了个错误

SQL语句中出错:AnalysisException:引用“A.CDE_WR”不明确,可能是:A.CDE_WR,A.CDE_WR。;第6行第4位置

在数据库里。如何处理此问题?

此查询:

SELECT * 
FROM cctv1_details c1d LEFT JOIN
     cctv3_details c3d
     ON c1d.CDE_WR = c3d.CDE_WR AND c1d.CDE_dist = c3d.CDE_dist
正在使用SELECT*。*是两个表中所有列的缩写

显然,两个表中的组合列具有重复的列名;至少,CDE_WR和CDE_dist-可能还有其他的。一般的解决方案是列出所有列:

SELECT c1d.col1, c1d.col2, . . . c3d.colx, c3d.coly
FROM cctv1_details c1d LEFT JOIN
     cctv3_details c3d
     ON c1d.CDE_WR = c3d.CDE_WR AND c1d.CDE_dist = c3d.CDE_dist;
然而,这通常被短接到:

SELECT c1d.*, c3d.colx, c3d.coly
FROM cctv1_details c1d LEFT JOIN
     cctv3_details c3d
     ON c1d.CDE_WR = c3d.CDE_WR AND c1d.CDE_dist = c3d.CDE_dist;

请注意,我将表别名更改为表名的合理缩写,使查询更清晰、更易于维护。

尝试选择a.*和b.*但我们总是明确地命名字段,以帮助人们阅读我们正在做的事情。此外,如果您在选择中重复使用相同的别名,它会起作用吗?你能试着在第二个语句中使用D和E吗?