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

Как мога да ИЗБЕРЯ редове с MAX (стойност на колона), DISTINCT по МНОГО колони в SQL

Типичен метод използва корелирана подзаявка:

select t.*
from t
where t.date = (select max(t2.date) from t t2 where t2.env = t.env);

Може би малко по-добър метод е:

select t.*
from t
where t.id = (select t2.id
              from t t2 
              where t2.env = t.env
              order by t2.date desc, t2.id desc
              limit 1
             );

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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Трябва ли да използвам NULL или празен низ, за ​​да представя никакви данни в колоната на таблицата?

  2. Премахване на дублирани поднизове

  3. MySQL проверява дали два периода от време се припокриват с въвеждането

  4. Извършване на промени в множество записи въз основа на промяна на един запис с SQL

  5. Разлика между нормален ajax и дълга анкета