小菜鸡_弱弱 2023-01-11 10:18 采纳率: 84.1%
浏览 59
已结题

mysql语句转postgresql语句

需要把mysql的语句转换成postgresql的语句,如图第一语句在postgresql中无法执行,因为有聚合函数其他列就也需要聚合

img

我想着那就把聚合单独拿出来计算,所以就改造成了第二条sql的样子

img

虽然可以执行但是返回的数据有问题,正常第一条sql中执行完应该返回如下信息

img

所以以上问题出在哪里呢,如果想改造应该怎么改呢
附sql:
SELECT '2023-01-01' initialTimePoint, '2023-01-01' timePoint, count(id) result, r.appsysid FROM mysql_finger r WHERE r.create_time >= '2023-01-01' AND r.create_time < '2023-01-02' and '1' = '1'



  • 写回答

4条回答 默认 最新

  • leaf_cq 2023-01-11 10:29
    关注

    1、经MySQL5.7测试,当一个包count聚合函数的SQL中包含表的其他列如题主中的r.appsysid时,如果r.appsysid在结果集中的所有值均为同一个值时,可以不使用GROUP BY语句也能正常执行出结果,但,这个不是标准语法,在PostGresQL中是无法执行的,修改起来也很简单,加个GROUP BY语句即可:

    SELECT '2023-01-01' initialTimePoint, '2023-01-01' timePoint, count(id) result, r.appsysid
      FROM mysql_finger r
     WHERE r.create_time >= '2023-01-01' AND r.create_time < '2023-01-02' and '1' = '1'
     GROUP BY r.appsysid;
    
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 1月28日
  • 创建了问题 1月11日