EXPERT RESPONSE
The answer is yes, but only in a very certain way.
Let's imagine that this is your current query:
select foo
, sum(bar) as sumbar
from qux
group
by foo
Now, we want to add two more columns—let's call them other1 and
other2—but we don't want to add them to the GROUP BY, because we still
want only one row per foo in the results.
The very certain and only way that this will be allowed is by ensuring
that the two new columns are inside aggregate functions.
Here's one example of many possibilities:
select foo
, sum(bar) as sumbar
, max(other1) as maxcol1
, avg(other2) as avgcol2
from qux
group
by foo
What is NOT ALLOWED is to put "naked" columns (not inside
aggregate functions) into the SELECT clause but leave them out of the
GROUP BY clause:
select foo
, sum(bar) as sumbar
, other1
, other2
from qux
group
by foo
This is invalid syntax, and only MySQL will run it (although they do warn
you, in
GROUP BY and HAVING with Hidden Fields, that results can be unpredictable).
|