我正在将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