Я пытаюсь понять странное поведение 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, ни в агрегатной функции.
Результат, кажется, отличается от того, что я понимаю.
Может кто-нибудь объяснить мне, что мне здесь не хватает?
Это ошибка.
Который был исправлен более десяти лет назад; SQLite 2.8.17 был выпущен в 2005 году.
Вы должны пересмотреть свой выбор программного обеспечения.
Других решений пока нет …