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

Моля, обяснете функционалността на select max(...) ... group by в sql

В случай на използване на MAX() GROUP BY клауза по същество казва на машината за заявки как да групира елементите, от които да определи максимум. В първия си пример избирахте само една колона, така че нямаше нужда от групиране. Но във втория ви пример имахте множество колони. Така че трябва да кажете на машината за заявки как да определи кои ще бъдат сравнени, за да се намери максимум.

Казахте му да се групира по id колона. Което означава, че ще сравни записи, които имат еднакъв id и ви дава максималния за всеки уникален id . Тъй като всеки запис има различен id , по същество не сте направили нищо с тази клауза.

Той групира всички записи с id от 1 (което беше единичен запис) и върна записа с максималния id от тази група (което беше този запис). Той направи същото за 2 , 3 и т.н.

В случая с трите колони, показани тук, единственото място, където би имало смисъл да групирате вашите записи, би било test_id колона. Нещо подобно:

SELECT MAX(id), title, test_id
FROM images
WHERE image IS NOT null 
GROUP BY test_id

Това ще ги групира по test_id , така че резултатите ще включват записи 6 (максималния id за test_id 0), 4 (максималния id за test_id 1) и 8 (максималния id за test_id 2). Чрез разделяне на записите в тези три групи въз основа на трите уникални стойности в test_id колона, той може ефективно да намери "максимален" id във всяка група.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Смесени MySQL и Sphinx заявки

  2. Как да извика съхранена процедура на MySQL от PHP код?

  3. MySQL с JOIN не използва индекс

  4. Как да направите удостоверяване с помощта на SOAP?

  5. Как да свържа Grails 3.0 към моята локална база данни Mysql