Кой идентификатор ще бъде върнат (1, 2 или 3)?
О:Сървърът ще избере за всички записи с едно и също име идентификатора, който иска (най-вероятно най-бързият за извличане, което е непредсказуемо). За да цитирате официалната документация:
Много повече информация в тази връзка .
Кой идентификатор ще бъде ORDER BY тази заявка (същото като върнато? ... вижте въпрос 1)?
Няма смисъл да разберете в какъв ред ще бъдат върнати извлечените данни, тъй като не можете да предвидите резултата, който ще получите. Въпреки това е много вероятно резултатът да бъде сортиран по колоната с непредвидим идентификатор.
Можете ли да контролирате кой идентификатор се връща/използва за поръчка? напр. Върнете най-големия идентификатор или първия идентификатор от ГРУПА.
В този момент трябва да приемете, че не можете. Прочетете отново документацията.
Да направим нещата още по-ясни:Не можете да предвидите резултата от неправилно използвана клауза GROUP BY. Основният проблем с MySQL е, че ви позволява да го използвате по нестандартен начин, но трябва да знаете как да използвате тази функция. Основната цел е групирането по полета, за които знаете, че винаги ще бъдат едни и същи. Напр.:
SELECT id, name, COUNT( * ) AS frequency
FROM table
GROUP BY id
Тук знаете name
ще бъде уникален като id
функционално определя name
. Така че резултатът, който знаете, е валиден. Ако групирате и по име, тази заявка ще бъде по-стандартна, но ще се представи малко по-лошо в MySQL.
Като последна забележка, имайте предвид, че според моя опит резултатите в тези нестандартни заявки за избраните и негрупирани полета обикновено са тези, които бихте получили, прилагайки GROUP BY
и след това ORDER BY
на това поле. Ето защо толкова много пъти еси да работиш. Въпреки това, ако продължите да тествате, в крайна сметка ще разберете, че това се случва в 95% от времето. И не можете да разчитате на този номер.