【发布时间】:2020-11-04 01:18:09
【问题描述】:
我想从中获取“user1”最近联系人的消息表,现在该表如下所示:
| id | receiver | sender | time |
|----|----------|--------|------------|
| 1 | user1 | host1 | 2020-07-02 |
| 2 | host2 | user1 | 2020-07-03 |
| 3 | user3 | host3 | 2020-07-04 |
我设法通过使用 mysql 得到了预期的结果:
SELECT CASE WHEN receiver = 'user1' THEN sender ELSE receiver END AS id, max(time) AS time
FROM message WHERE receiver = 'user1' OR sender = 'user1'
GROUP BY CASE WHEN receiver = 'user1' THEN sender ELSE receiver END;
但是当我在 postgres 上运行此查询时,我收到错误:Postgresql 错误:列接收器必须出现在 GROUP BY 子句中或用于聚合函数中。有什么办法可以解决这个问题?
【问题讨论】:
-
您的查询按照 PostgreSQL 编写的方式工作:db-fiddle.com/f/c648pLyq1N4yQTDcBMUfeM/0
-
是的,但是当我在 node-postgres 模块上使用它时,我得到了那个错误
-
请更新您的问题并添加您的节点代码。
标签: sql postgresql node-postgres