2015-12-01 69 views
0

林讓我的查詢以下錯誤:語法錯誤的DELETE FROM左INNER JOIN

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; 

任何想法可能是什麼問題?

+0

那麼,哪個RBDMS? – Strawberry

+0

postgres。我現在要解決這個問題。 – ntonnelier

+0

DELETE FROM property_import_image_results p –

回答

0

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

+2

http:// meta。 stackexchange.com/questions/87678/discouraging-w3schools-as-a-resource - 可能是專業競爭,但只是在說' – Strawberry

+0

當你打算從JOIN中刪除時不是這種情況。這是我第一次嘗試.. – ntonnelier

+0

@Strawberry感謝您的參考,我將在未來更仔細地使用此參考w3schools。 – Aurelien

0

雖然我不熟悉postgresql的具體細節,但是在刪除語句的開始部分,您是不是真的說「從mytable中刪除mytable」?不應該是「從property_import_image_results p ...等中刪除」嗎?

+1

如果您的答案不是問題,通常會更好地收到答案。 –

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) 
        ) ; 
+0

謝謝@Gordon Linoff,但我需要ORDER BY才能獲得最後創建的結果(im基本上試圖獲得avary結果,由external_url組成,除最近的結果外) – ntonnelier

+0

@ntonnelier。 。 。我懂了。我將'='改爲'>',它應該得到最新的版本進行更新。 –