日付昇順日付descと順序で、レコードのグループを取得MySQLの

JENZ:

私はデータの下でMySQLのテーブルをしました。

name        table_data       table_date 
name1         {count:2}       2020-01-24 02:23:41
name1         {count:5}       2020-01-24 05:45:07
name1         {count:8}       2020-01-24 12:45:18
name1         {count:20}      2020-01-30 08:40:07
name1         {count:28}      2020-01-30 15:08:12

私は日付の1つのレコードのみを取得するためのSQLをしたいです。問題は、私はtable_date昇順に基づいてテーブルを注文しましたが、各日付のための唯一の最新のレコードが必要、ということです。

期待される結果:

name        table_data      table_date  
name1         {count:8}       2020-01-24 12:45:18
name1         {count:28}      2020-01-30 15:08:12

私のSQLは次のようです:

select name, table_data, table_date
 from my_table 
 where DATE(table_date) <= DATE('2020-04-01') group by DATE(table_date) order by table_date asc 

しかし、このSQLは最小の日付を持つレコードを与えます。

誰の助けが私はこの問題を解決することはできますか?

前もって感謝します。

串刺し:

あなたが使用しているMySQLのバージョンを言及していません。MySQLでは、あなたが使用することができますを8.x ROW_NUMBER()維持する行を決定します。

例えば:

select name, table_date
from (
  select name, table_date
    row_number() over partition by name order by table_date desc) as rn
  from my_table
) x
where rn = 1

あなたが使用することができ5.xの私は、MySQLで考えるINタプルで。例えば:

select *
from my_table
where (name, table_date) in (
  select name, max(table_date) from my_table group by name, date(table_date)
)

おすすめ

転載: http://10.200.1.11:23101/article/api/json?id=384112&siteId=1