2012-08-04 26 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演示的 - 取消了该效果,并且严格错误。