错误:列必须出现在GROUP BY子句中或用于聚合函数

时间:2017-05-18 21:19:51

标签: sql postgresql

我尝试将一个应用程序从MySQL重写为PostgreSQL。

在MySQL中我有SQL语句:

SELECT u.guid, u.* 
FROM ossn_users as u 
WHERE(u.time_created IS NOT NULL) 
ORDER by u.guid ASC 
LIMIT 0, 10;

在Postgres中我得到了这个声明错误。 错误:列u.guide必须出现在GROUP BY子句中或用于聚合函数

我将PostgreSQL的SQL语句修改为:

SELECT u.guid, u.* 
FROM ossn_users as u 
WHERE(u.time_created IS NOT NULL) 
GROUP by u.guid, u.type, u.username, u.email, u.password, 
         u.salt, u.first_name, u.last_name, u.last_login, 
         u.last_activity, u.activation, u.time_created 
ORDER by u.guid ASC 
LIMIT 0 OFFSET 10;

但在应用程序中它不起作用。

请帮忙!

如何修改MySQL语句以满足PostgrSQL的需求。

谢谢。

1 个答案:

答案 0 :(得分:0)

不确定为什么需要GROUP BY,我看不到聚合,但在postgresql中,LIMIT 0会将结果限制为0.更改LIMIT并删除{{1}从postgresql查询中获取结果。

MySQL:OFFSET表示偏移0,限制为10

Postgresql:LIMIT 0, 10或简称LIMIT 10, OFFSET 0表示限制10,偏移0