0

我将 PHP 7.1 与 Pgsql 9.2.24 一起使用。拥有两个相似的项目副本(生产和开发)和两个具有相同数据的相似数据库。但是查询在 GROUP BY 情况下的工作方式不同。

我尝试使用 SHOW ALL 查询检查所有 sql 设置,但没有发现任何区别。我知道,重写查询可以解决我的问题,但是使用 GROUP BY 运算符的代码太多。完整的 SQL 版本:x86_64-redhat-linux-gnu 上的 PostgreSQL 9.2.24,由 gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-28) 编译,64 位。尝试运行 sql-query:

SELECT chr.*, usr.image, usr.first_name, usr.second_name, usr.last_activity, CASE WHEN MAX(chrm.created_at) IS NOT NUll THEN MAX(chrm.created_at) ELSE 0 END AS created_m, MAX(chrm.id) AS id_m FROM chat_rooms as chr LEFT JOIN users usr ON chr.author_id = usr.id LEFT JOIN chat_messages chrm ON chr.id = chrm.chat_id LEFT JOIN chat_rooms_user chru ON chr.id = chru.chat_rooms_id WHERE chru.user_id = 1104 AND chru.status = 1 AND ( chrm.status != 10 OR chrm.status IS NULL) AND chr.status = 1 GROUP BY chr.id, usr.id HAVING coalesce(COUNT(chrm.id),0) > 0 ORDER BY created_m DESC LIMIT 10 OFFSET 0

并得到错误(服务器状态 500):未捕获的异常:错误:列“chr.parent_id”必须出现在 GROUP BY 子句中或用于聚合函数中

其他数据库返回给我的不是错误,而是正确的数据结果。

4

0 回答 0