Нов съм в SQL и се обърквам от разликата в следните две заявки:
SELECT MAX(версия), * FROM таблица WHERE primary_key = @key GROUP BY местоположение
ИЗБЕРЕТЕ версия, * ОТ таблица WHERE primary_key = @key GROUP BY location HAVING version = MAX(version)
Ако приемем, че таблицата изглежда така:
primary_key | version | location | data
Ако разбирам това правилно, и двете заявки избират максималния запис на версия във всяко местоположение (сред тези, които имат @key като първичен ключ). И така, има ли разлика между двете заявки? Или разликата е само в производителността?
group by
той просто разглеждаcopies_in_stock
, сhaving
препраща къмmax
(псевдоним наMAX(copies_in_stock)
).. Ако той използваFROM writer WHERE MAX(copies_in_stock) > 5 GROUP BY poet;
вместо това, той ще получи същия резултат, както ако се използваhaving
-клауза върху псевдонима на агрегацията върхуcopies_in_stock
. - person dognose   schedule 27.06.2017