我正在將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)
我正在將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)
的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
將此語句解釋爲另一個問題,並嘗試格式化查詢以使其可讀。 – 2012-08-04 19:32:49
:
SELECT COALESCE((SELECT max(run_id) FROM searchbank), 0);
這樣的查詢的唯一一點是返回0
而不是無行如果searchbank
沒有行。
刪除外部SELECT
- 就像@Gordon演示的 - 取消了該效果,並且嚴格錯誤。
替換ifeull(a,b)通過COALESCE(a,b) – wildplasser 2012-08-04 18:10:19
仍然我得到相同的錯誤 – Vilva 2012-08-04 18:11:45
LIMIT只有一個參數。使用'LIMIT 1 OFFSET 0' – wildplasser 2012-08-04 18:23:41