2012-08-04 30 views
0

我正在將MySQL數據庫遷移到PostgreSQL。在將數據庫連接到我的Python腳本時,我收到了一些語法錯誤。所以,請你轉換這個MySQL查詢到PostgreSQL的:將PostgreSQL的MySQL端口查詢

select ifnull((select ifnull(run_id,0) from searchbank order by run_id desc limit 0,1),0) 
+1

替換ifeull(a,b)通過COALESCE(a,b) – wildplasser 2012-08-04 18:10:19

+0

仍然我得到相同的錯誤 – Vilva 2012-08-04 18:11:45

+0

LIMIT只有一個參數。使用'LIMIT 1 OFFSET 0' – wildplasser 2012-08-04 18:23:41

回答

2

的Postgres不支持IFNULL:

select coalesce((select coalesce(run_id,0) 
       from searchbank 
       order by run_id desc limit 0,1),0 
       ) 

您可能會發現這個版本稍微乾淨和清晰:

select coalesce(max(run_id), 0) 
from searchbank 
+0

將此語句解釋爲另一個問題,並嘗試格式化查詢以使其可讀。 – 2012-08-04 19:32:49

1
簡單

SELECT COALESCE((SELECT max(run_id) FROM searchbank), 0); 

這樣的查詢的唯一一點是返回0而不是無行如果searchbank沒有行。

刪除外部SELECT - 就像@Gordon演示的 - 取消了該效果,並且嚴格錯誤。