Join 运行配置单元联接查询时出错

Join 运行配置单元联接查询时出错,join,hive,Join,Hive,错误:编译语句时出错:失败:ParseException行 22:0在“当前日期”附近的“左侧”缺少EOF (州=42000,代码=40000) WHERE子句,即A.DATE>CURRENT_DATE应该在第一个select中。还要注意,您有一个条件A.ID=A.ID,而不是A.ID=A1.ID SELECT A.* , B.* FROM (SELECT ID,DATE FROM APPLE) A INNER JOIN (SELECT ID,MAX(DATE) AS MAXDATE FROM

错误:编译语句时出错:失败:ParseException行 22:0在“当前日期”附近的“左侧”缺少EOF (州=42000,代码=40000)


WHERE子句,即
A.DATE>CURRENT_DATE
应该在第一个select中。还要注意,您有一个条件
A.ID=A.ID
,而不是
A.ID=A1.ID

SELECT A.* , B.* FROM
(SELECT ID,DATE FROM APPLE) A
INNER JOIN 
(SELECT ID,MAX(DATE) AS MAXDATE FROM APPLE GROUP BY ID) A1
ON A.ID = A.ID AND A.DATE = A1.MAXDATE
WHERE A.DATE > CURRENT_DATE
LEFT OUTER JOIN (
SELECT ID,NAME FROM BANANA) B
ON A.ID = B.ID 
WHERE B.NAME IN ('USA','GBR') LIMIT 10;

WHERE子句,即
A.DATE>CURRENT_DATE
应该在第一个select中。还要注意,您有一个条件
A.ID=A.ID
,而不是
A.ID=A1.ID

SELECT A.* , B.* FROM
(SELECT ID,DATE FROM APPLE) A
INNER JOIN 
(SELECT ID,MAX(DATE) AS MAXDATE FROM APPLE GROUP BY ID) A1
ON A.ID = A.ID AND A.DATE = A1.MAXDATE
WHERE A.DATE > CURRENT_DATE
LEFT OUTER JOIN (
SELECT ID,NAME FROM BANANA) B
ON A.ID = B.ID 
WHERE B.NAME IN ('USA','GBR') LIMIT 10;

<>你的问题是在SQL语句的中间有一个WHERE子句。可以将其移动到的嵌套查询中,也可以将其添加到末尾的WHERE子句中。您可能还希望将B表上的筛选移动到嵌套查询中,因为您实际上是通过将左连接放在语句末尾的WHERE子句中,使其成为内部连接

或者

SELECT 
     A.* , B.* 
FROM 
    (SELECT ID,DATE FROM APPLE WHERE DATE > CURRENTDATE) A
INNER JOIN  
    (SELECT ID,MAX(DATE) AS MAXDATE FROM APPLE GROUP BY ID) A1
ON 
     A.ID = A1.ID AND A1.DATE = A1.MAXDATE 
LEFT OUTER JOIN 
     (SELECT ID,NAME FROM BANANA) B
ON 
     A.ID = B.ID 
WHERE B.NAME IN ('USA','GBR') LIMIT 10;


<>你的问题是在SQL语句的中间有一个WHERE子句。可以将其移动到的嵌套查询中,也可以将其添加到末尾的WHERE子句中。您可能还希望将B表上的筛选移动到嵌套查询中,因为您实际上是通过将左连接放在语句末尾的WHERE子句中,使其成为内部连接

或者

SELECT 
     A.* , B.* 
FROM 
    (SELECT ID,DATE FROM APPLE WHERE DATE > CURRENTDATE) A
INNER JOIN  
    (SELECT ID,MAX(DATE) AS MAXDATE FROM APPLE GROUP BY ID) A1
ON 
     A.ID = A1.ID AND A1.DATE = A1.MAXDATE 
LEFT OUTER JOIN 
     (SELECT ID,NAME FROM BANANA) B
ON 
     A.ID = B.ID 
WHERE B.NAME IN ('USA','GBR') LIMIT 10;


我不确定这是否是配置单元的正确语法,但我非常确定
SELECT A.*,B.*FROM…
必须带有星形,而不带点?我只添加了A.*,B.*,出于某种原因,它没有显示出来。现在纠正它。这是一个猜测,但我认为它失败了,因为你在中间有哪一个语句,这意味着只有在结尾。您没有使用子查询对此语句进行筛选。如果我在on(左-外连接)之后插入where条件,则该内部连接部分需要where子句,这将无法解决我的目的。我不确定这是否是配置单元的正确语法,但我确信
选择一个*,B.*FROM…
必须是带星的,而不带点吗?我只添加了A.*,B.*,因为某种原因它没有显示。现在纠正它。这是一个猜测,但我认为它失败了,因为你在中间有哪一个语句,这意味着只有在结尾。您没有使用子查询对此语句进行筛选。如果在on(左外连接)之后插入where条件,则该内部连接部分需要where子句,这将无法解决我的问题。