sql >> Database teknologi >  >> RDS >> Mysql

Får forkerte værdier for andre kolonner, når jeg vælger MAX(updated_date)

Du har enten brug for en GROUP BY-klausul eller en mere kompleks forespørgsel.

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

For eksempeldataene vil dette returnere 3 rækker.

Mere sandsynligt vil du have:

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;

For eksempeldataene vil dette returnere 1 række:

ta3   2012-03-11 11:05:56

Af de store DBMS'er er det kun MySQL, der tillader dig at udelade GROUP BY-sætningen, når du har en blanding af aggregater og ikke-aggregerede kolonner i valglisten. SQL-standarden kræver GROUP BY-udtrykket, og du skal angive alle ikke-aggregerede kolonner i den. Nogle gange, i MySQL, giver udeladelse af GROUP BY-sætningen det svar, du ønsker; så ofte som ikke, lykkes det dog at give et uventet svar.



  1. ASP.NET bruge SqlConnection connect MySQL

  2. SQL forhindrer duplikerede poster, hvis der findes 2 værdier

  3. SQLite UNDTAGET operatør

  4. forespørgsel på binær kolonne ved hjælp af lignende i sql-server