sql >> Databáze >  >> RDS >> Mysql

Když vyberu MAX(aktualizované_datum), dostávám nesprávné hodnoty pro ostatní sloupce

Potřebujete buď klauzuli GROUP BY, nebo složitější dotaz.

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

U ukázkových dat to vrátí 3 řádky.

Spíš chcete:

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;

U ukázkových dat to vrátí 1 řádek:

ta3   2012-03-11 11:05:56

Z hlavních DBMS vám pouze MySQL umožňuje vynechat klauzuli GROUP BY, pokud máte ve výběrovém seznamu směs agregovaných a neagregovaných sloupců. Standard SQL vyžaduje klauzuli GROUP BY a musíte v ní uvést všechny neagregované sloupce. Někdy v MySQL vynechání klauzule GROUP BY vytvoří požadovanou odpověď; i když často ne, dokáže dát neočekávanou odpověď.



  1. Jak funguje TRY_CAST() na serveru SQL

  2. Jak shrnout časové pole v SQL Server

  3. Duplicitní záznam pro klíč 'group_key'

  4. problémy s instalací perl DBI-mysql v systému Windows