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)
)