我正在更新Qt软件,使其兼容sqlite和Postgresql.
我有一个C方法,用于计算给定子句的给定表的元素.
我有一个C方法,用于计算给定子句的给定表的元素.
SELECT COUNT(*) FROM table_a INNER JOIN table_b AS ON table_b.fk_table_a = table_a.id WHERE table_a.start_date_time <> 0 ORDER BY table_a.creation_date_time DESC
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; }
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。