我尝试将一个应用程序从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的需求。
谢谢。
答案 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