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

Получаване на грешни стойности за други колони, когато избера MAX(updated_date)

Имате нужда или от клауза GROUP BY, или от по-сложна заявка.

SELECT field1, MAX(updated_date)
  FROM mytable
 GROUP BY field1

За примерните данни това ще върне 3 реда.

По-вероятно е да искате:

SELECT t1.field1, t3.max_date
  FROM mytable AS t1
  JOIN (SELECT MAX(t2.updated_date) AS max_date
          FROM mytable AS t2
       ) AS t3
    ON t1.updated_date = t3.max_date;

За примерните данни това ще върне 1 ред:

ta3   2012-03-11 11:05:56

От основните СУБД само MySQL ви позволява да пропуснете клаузата GROUP BY, когато имате смесица от агрегатни и неагрегирани колони в списъка за избор. Стандартът SQL изисква клаузата GROUP BY и трябва да изброите всички неагрегирани колони в нея. Понякога в MySQL пропускането на клаузата GROUP BY дава отговора, който искате; но толкова често, колкото и не, успява да даде неочакван отговор.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Какво е обратното на GROUP_CONCAT в MySQL?

  2. Opencart 1.5.1.3 показва специална цена с начална и крайна дата на страницата за показване на продукта

  3. Как да изчислим часовата разлика с графика, работещ ч/б две времеви печати?

  4. Добавете колона към всички MySQL Select Queries с един кадър

  5. Как да изберете всички записи, които са 10 минути в рамките на текущата времева марка в MySQL?