DELETE FROM LEFT INNER JOIN的语法错误

时间:2015-12-01 15:34:56

标签: sql postgresql

我的查询出现以下错误:

ERROR:  syntax error at or near "p"

这是我的疑问:

  DELETE p FROM property_import_image_results p
  LEFT JOIN LATERAL (SELECT q.created_at FROM property_import_image_results q
  WHERE q.external_url=p.external_url AND (q.listing_image_id = p.listing_image_id OR q.listing_image_id IS NULL)
  ORDER BY q.created_at DESC NULLS LAST LIMIT 1) as qf ON p.created_at = qf.created_at
  WHERE qf.created_at is NULL;

知道可能是什么问题吗?

3 个答案:

答案 0 :(得分:2)

您不能以这种方式表达您的查询。也许这就是你想要的:

DELETE FROM property_import_image_results p
    WHERE NOT EXISTS (SELECT 1
                      FROM property_import_image_results q
                      WHERE q.external_url = p.external_url AND
                            q.created_at > p.created_at AND 
                            (q.listing_image_id = p.listing_image_id OR  q.listing_image_id IS NULL)
                     ) ;

答案 1 :(得分:0)

DELETE和FROM子句之间不需要p:http://www.w3schools.com/sql/sql_delete.asp。所以试着删除它。

答案 2 :(得分:0)

虽然我不熟悉postgresql的具体内容,但您实际上并没有说过"从mytable"删除mytable。在删除语句的开头?不应该是"从property_import_image_results p ...等删除。 。等"