4

我试图了解 GROUP BY 在 SQLite v2.8.17 上的奇怪行为

这是代码:

<?php
$selectMaxQuery = $this->_db->prepare('SELECT COUNT(*) AS c FROM (SELECT MAX(groupCode) FROM docs GROUP BY groupCode)');
$selectQuery = $this->_db->prepare('   SELECT COUNT(*) AS c FROM (SELECT     groupCode  FROM docs GROUP BY groupCode)');
$selectMaxQuery->exec();
$selectQuery->exec();
var_dump($selectMaxQuery->fetch()->c, $selectQuery->fetch()->c);

这是结果:

string(3) "614"
string(3) "797"

我在互联网上的任何地方,它都说 GROUP BY 行为是将几行合并为一个。如果不使用聚合函数,它应该给我一个错误或为每行选择一个随机值,该值既不在 GROUP BY 也不在聚合函数中。

结果似乎和我理解的不一样。

有人可以解释一下我在这里缺少什么吗?

4

1 回答 1

2

这是一个错误。

十多年前就修好了;SQLite 2.8.17 于 2005 年发布。您应该重新考虑您选择的软件。

于 2017-03-17T18:19:02.593 回答