Mysql
 sql >> база данни >  >> RDS >> Mysql

Полетата на кой ред се връщат при групиране с MySQL?

Кой идентификатор ще бъде върнат (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% от времето. И не можете да разчитате на този номер.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да добавя mode=mysql към вградената H2 DB в Spring Boot 1.4.1 за @DataJpaTest?

  2. MySQL какъв е максималният размер на база данни?

  3. Табло за обяви - Оптимизация на база данни

  4. mysql грешка 'TYPE=MyISAM'

  5. Принудително пускане на mysql, заобикаляйки ограничението на външния ключ