Ошибка Groupping Error при использовании ORDER BY без GROUP BY
Выполняется простой запрос
SELECT "Table".* FROM "Table" WHERE "Table"."Field" = ? ORDER BY "Caption" LIMIT 100
с параметром
params :["12347063-dea3-4f16-9260-ea38112347d5"]
Что влечет к исключению
Grouping error: 7 ОШИБКА: столбец "Table.Caption" должен фигурировать в предложении GROUP BY или использоваться в агрегатной функции
Не понимаю при чем тут Groupping error, но в HeidiSql этот запрос выполняется без ошибок. Также запрос выполняется, если убрать ORDER BY.
Я пользуюсь пакетом fluentpdo, но исключение возникает в классе PDOStatement (точнее в классе, который я от него наследовал)
<?php namespace name\space\pdo;
class LogPdoStatement extends \PDOStatement
{
protected $connection;
protected function __construct($connection)
{
$this->connection = $connection;
}
public function execute($params = null)
{
$start = microtime(true);
$result = parent::execute($params); // тут исключение
$time = microtime(true) - $start;
$this->connection->addLog([
'query' => $this->queryString,
'params' => $params,
'time' => round($time * 1000, 3),
]);
return $result;
}
}
Лог сервера с этим запросом:
2020-12-10 08:08:58.195 GMT [10896] ОШИБКА: столбец "Table.Caption" должен фигурировать в предложении GROUP BY или использоваться в агрегатной функции (символ 109)
2020-12-10 08:08:58.195 GMT [10896] ОПЕРАТОР: SELECT COUNT(*) as "count" FROM "Table" WHERE "Table"."Field" = $1 ORDER BY "Caption"
Ответы (1 шт):
Автор решения: Skywave
→ Ссылка
Согласно логам сервера дело было в другом запросе с функцией COUNT, видимо в запросе с COUNT всегда должна идти конструкция GROUP BY, если идет сортировка