各user_id
の特定の日付の前に最も近い日付のみを選択する方法(フル行を選択)MySQL:特定の日付の前に最も近い日付を選択
id user_id create_date
0 1 2016-01-01
1 1 2016-01-05
2 2 2016-01-06
3 3 2016-01-06
4 2 2016-01-09
5 2 2016-01-12
6 4 2016-01-15
7 1 2016-01-21
8 2 2016-01-22
9 5 2016-01-25
SQLサンプル:
select t.id,t.user_id,MAX(t.create_date)
from sample_table t
where date(t.create_date) < '2016-01-20'
group by t.user_id
limit 10
期待される結果を(期待通りに動作していないようです):
id user_id create_date
1 1 2016-01-05
3 3 2016-01-06
5 2 2016-01-12
6 4 2016-01-15
"結合"と "ネストされたクエリ"ではなく、パフォーマンスソリューションがありますか? – mwafi
@mwafi ** mysql **については、私は**ノー**と思います。 postgreSQL、oracle、SQL server> = 2012のような他のものについては、元のクエリで 'MAX(t.create_date)over(t.user_id順のt.user_id順)'のような分析機能を利用することができます。select異なっていてグループ化する必要はありません。 –