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

MySQL получава записи за последна дата от множество

Вие можете използвайте GROUP BY , но е важно да разберете как работи.

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

SELECT id, MIN(whatever), MAX(whatever), another_column
FROM your_table
GROUP BY id

„Another_column“ може да принадлежи към реда, съдържащ стойността MIN() или стойността MAX(), или дори към друг ред, който изобщо не се показва. В други RDBMS различни от MySQL всъщност е забранено да се избират колони, които не използват агрегатна функция или не са изброени в GROUP BY клауза, само за да се предотврати това потребителите да направят грешка или да мислят, че са получили правилния резултат.

Така че във вашия случай изглежда искате да покажете и колоната "стойност". Поради горните причини отговорът на juergen_d е грешен, защото не избира „стойност“ и ако го направи, не можете да сте сигурни, че е правилната „стойност“. Отговорът на Филипе Силва е грешен, защото се групира по „стойност“. Правейки това във вашия случай всъщност ще върне цялата таблица. Отговорът на Ромеш е грешен, защото използва два пъти MAX() ще ви даде максималните стойности, очевидно, но не и стойността, съответстваща на стойността за дата и час.

И така, как трябва да го направите? Тук са описани 3 начина . Научете ги, като ги прилагате сами. Не е толкова трудно :)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Актуализиране на множество редове с различни стойности

  2. SQL:Подреждане по колона, след това по подниз смесване на възходящ и низходящ

  3. Как да добавя първичен ключ към MySQL таблица?

  4. Поддържа ли Visual Studio Server Explorer доставчици на персонализирани бази данни?

  5. PDOStatement – ​​Използване на сериозни акценти (`) в колоните?