postgresql – 列必须出现在GROUP BY子句中或用于聚合函数

postgresql – 列必须出现在GROUP BY子句中或用于聚合函数,第1张

概述我正在更新Qt软件,使其兼容SQLite和PostgreSQL. 我有一个C方法,用于计算给定子句的给定表的元素. 在SQLite中,以下工作并给了我一个数字N(计数). SELECT COUNT(*) FROM table_a INNER JOIN table_b ASON table_b.fk_table_a = table_a.idWHERE table_a.start_date_ti 我正在更新Qt软件,使其兼容sqlite和Postgresql.
我有一个C方法,用于计算给定子句的给定表的元素.

在sqlite中,以下工作并给了我一个数字N(计数).

SELECT COUNT(*) FROM table_a INNER JOIN table_b ASON table_b.fk_table_a = table_a.IDWHERE table_a.start_date_time <> 0ORDER BY table_a.creation_date_time DESC

使用Postgresql(我使用9.3),我有以下错误:

ERROR: column “table_a.creation_date_time” must appear in the
GROUP BY clause or be used in an aggregate function
liNE 5: ORDER BY
table_a.creation_date_time DESC

如果我添加GROUP BY table_a.creation_date_time,它会给我一个包含N行的表.
我已经阅读了很多关于DBMS如何允许您省略GROUP BY子句中的列的内容.现在,我只是困惑.

对于那些好奇的人来说,C方法是:

static int count(const QString &table,const QString &clauses = QString("")){    int success = -1;    if (!table.isEmpty())    {        QString statement = QString("SELECT COUNT(*) FROM ");        statement.append(table);        if (!clauses.isEmpty())        {            statement.append(" ").append(clauses)   ;        }        Qsqlquery query;        if(!query.exec(statement))        {            qWarning() << query.lastError();            qWarning() << statement;        }        else        {            if (query.isActive() && query.isSelect() && query.first())            {                bool ok = false;                success = query.value(0).toInt(&ok);                if (ok == false)                {                    success = -1;                    return success;                }            }        }    }    return success;}
解决方法 如果你只是在表上进行计数(*)以获得单个标量值结果,那么肯定按现在的顺序已经过时了?

删除过时的顺序,以获得跨多个dbms的“标准”查询行为

总结

以上是内存溢出为你收集整理的postgresql – 列必须出现在GROUP BY子句中或用于聚合函数全部内容,希望文章能够帮你解决postgresql – 列必须出现在GROUP BY子句中或用于聚合函数所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1156563.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存