【问题标题】:LEFt JOIN LATERAL showing error with SELECTLEFt JOIN LATERAL 显示 SELECT 错误
【发布时间】:2020-08-13 21:23:56
【问题描述】:

我正在尝试运行以下查询:

SELECT
tc.ID_NUMBER AS AFC_RPP_Number,
hc.BUSINESS AS Business,
hc.DIRECTOR AS Director,
tc.REASON_FOR_REVISION AS Description_of_Change
FROM alo_gg.AWS_PIM tc
left join lateral(
    select BUSINESS,DIRECTOR                
    FROM alo_ggg.tracker
    WHERE START_DATE <= tc.DATE AND  SO = tc.SO 
    ORDER BY START_DATE DESC 
    LIMIT 1
) hc;

以上查询显示错误:

ERROR:  syntax error at or near "SELECT"
left join lateral (SELECT BUSINESS,DIRECTOR...

如果我单独运行子查询,它会给我一个结果,但使用lateral 它会给我一个错误。

【问题讨论】:

  • @GMB 如果相关子查询没有产生行,那么主查询行也将被跳过。 LATERAL/LEFT JOIN LATERAL 不等价。
  • Greenplum 还是 Postgres?
  • 使用Greenplum
  • 我假设你想要CROSS JOIN LATERAL。另外,您能否edit 这个问题并直接从客户端添加 complete 错误消息?
  • Greenplum 不支持 LATERAL 连接

标签: sql greenplum lateral-join


【解决方案1】:

您需要添加ON TRUE并删除逗号:

SELECT
tc.ID_NUMBER AS AFC_RPP_Number,
hc.BUSINESS AS Business,
hc.DIRECTOR AS Director,
tc.REASON_FOR_REVISION AS Description_of_Change
FROM alo_gg.AWS_PIM tc -- removing comma
left join lateral(
    select BUSINESS,DIRECTOR                
    FROM alo_ggg.tracker
    WHERE START_DATE <= tc.DATE AND  SO = tc.SO 
    ORDER BY START_DATE DESC 
    LIMIT 1
) hc  ON TRUE;  -- adding `ON` clause

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-30
    • 1970-01-01
    • 2020-08-27
    • 1970-01-01
    • 2023-01-27
    • 2015-02-22
    • 2012-09-05
    相关资源
    最近更新 更多