Вы должны поместить все столбцы SELECT
в GROUP BY
или использовать на них функции, которые сжимают результаты до одного значения (например, MIN
, MAX
или SUM
).
Простой пример, чтобы понять, почему это происходит: представьте, что у вас есть такая база данных:
FOO BAR
0 A
0 B
и вы запускаете SELECT * FROM table GROUP BY foo
. Это означает, что база данных должна возвращать одну строку в качестве результата с первым столбцом 0
, чтобы выполнить GROUP BY
, но теперь есть два значения bar
. Какой результат вы ожидаете - A
или B
? Или должна ли база данных возвращать более одной строки, нарушая контракт GROUP BY
?