gpt4 book ai didi

mysql - 将 mysql 查询转换为 postgres 时出错

转载 作者:行者123 更新时间:2023-11-29 14:26:11 25 4
gpt4 key购买 nike

以下查询适用于 MySQL:

SELECT
f.created_date as time_sec
,sum(f.value) as value
, date_format( f.created_date , '%a') as metric
FROM ck_view_fills as f
GROUP BY date_format(f.created_date, '%a' )

我已将我的数据库迁移到 PostgreSQL,现在我正在转换我的查询以匹配。我天真的转换看起来像这样:

SELECT
f.created_date as time_sec
,sum(f.value) as value
, to_char( f.created_date , "D") as metric
FROM ck_view_fills as f
GROUP BY to_char( f.created_date , "D")

此查询未被接受,PostgreSQL 产生的错误消息如下:

Error in query (7): ERROR: column "f.created_date" must appear in the GROUP BY clause or be used in an aggregate function LINE 2: f.created_date as time_sec

据我所知,f.created_date 确实用在了 group by 子句中。我也看到过使用这种语法的示例。那么这个错误的原因是什么,我该如何解决呢?

最佳答案

Postgres 是正确的。事实上,您的查询在使用默认设置的最新版本的 MySQL 时也会失败。

只需使用聚合函数:

SELECT MIN(f.created_date) as time_sec,
SUM(f.value) as value
TO_CHAR(f.created_date, 'D') as metric
FROM ck_view_fills f
GROUP BY to_char(f.created_date , 'D');

您应该在 MySQL 中使用过类似的构造(关于 MIN() — 或 MAX())。

关于mysql - 将 mysql 查询转换为 postgres 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57625725/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com