Трябва да поставите всички колони на 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
?