我在mysql表中有列
uid , valueid , date
11 , 23, "2019-01-01"
11 , 24, "2019-02-01"
11 , 22, "2019-05-01"
我想要这种格式的结果
id , valueid , date
11 , 23 , "2019-01-01"
始终获取第一个值id,即23
如果用第一个值表示具有最小日期的那个,则:
select t.*
from t
where t.date = (select min(t2.date) from t t2 where t2.uid = t.uid);
为了获得最佳性能,您需要在(uid, date)
上建立索引。
使用LIMIT
,例如:
select * from t order by date limit 1
with t as
(
select *, row_number() over (partition by uid order by date) as rn
from your_table
)
select * from t
where rn = 1
Select * from table_name where valueid=23;