3

我有一个为 GWT 项目运行的 PostgreSQL 9.2.2 服务器。

当我在 phpPgAdmin 的 sql 选项卡中尝试它时,一个查询会带来麻烦,因为它工作正常:

 (select distinct max(enddate) as max,meterid 
  from usermeasurements 
  where locationid=127025 
    AND usage>-1 
  GROUP BY meterid ) as t1 
  left outer join usermeasurements as t2 
            ON (t1.meterid=t2.meterid 
            AND t1.max=t2.enddate)

但是当我尝试在我的 gwt 项目中使用该查询时,我收到以下错误:

 [btpool0-5] ERROR com.example.DataGetter  - unable to get usermeasurement: org.postgresql.util.PSQLException: ERROR: syntax error at or near "as" Position: 112

这是我第一次体验到 phpPgAdmin 和应用程序的不同之处。

可以看出,我使用 BoneCP 来处理我的连接池,但据我所知,这不应该有任何影响。

4

2 回答 2

3

既然max是关键字,请在之后使用其他内容as

select distinct max(enddate) as mymax, ...... 

更新 :

另一件事。在你的例外中它说

unable to get usermeasurement:

但是在你的 sql 中你使用了 usermeasurements (你s最后有一个)。再次检查你的源代码有可能你漏掉了字母s

于 2013-01-11T15:25:33.787 回答
0

也许查询应该如下所示:

SELECT * 
FROM
(SELECT DISTINCT max(enddate) as max, meterid 
 FROM usermeasurements 
 WHERE locationid = 127025 
   AND usage > -1 
 GROUP BY meterid ) as t1 
LEFT JOIN usermeasurements as t2 
     ON (t1.meterid=t2.meterid 
         AND t1.max=t2.enddate)

问题中的查询不正确(它看起来像是FROM更大查询的一部分)。

于 2013-01-11T16:41:23.660 回答