2014-10-16 2 views

ответ

0

Почему этот запрос содержит ошибку в оракула и MySQL правильно

Поскольку MySQL является своего рода разрешительным о смешивании агрегат и не агрегатные столбцы.

Цитирую the documentation:

В стандартном SQL, запрос, который включает в себя предложения GROUP BY не может ссылаться на неагломерированных столбцов в списке выбора, не указанным в пункте GROUP BY.

[...]

MySQL расширяет применение GROUP BY так, чтобы выбрать список может относиться к неагломерированным столбцам не указанным в GROUP BY предложения.

[...]

это полезно в первую очередь, когда все значения в каждом столбце неагломерированных не указанный в GROUP BY являются одинаковыми для каждой группы. Сервер может свободно выбирать любое значение из каждой группы, поэтому, если они не совпадают, выбранные значения являются неопределенными.

0

(select sum(total) FROM invoices) это выражение, это не агрегатной функции и не существует в GROUP BY (на самом деле вы не можете использовать подзапросы в GROUP BY)

Таким образом, вы пытаетесь смешать агрегат и тем не совокупные выражения вместе.

0

Если вы ищете рабочую версию в Oracle, вы можете сделать:

select sum(total) + sum(total) 
from invoices; 
+1

Какого бы лучшим решением в MySQL, а также. –