Solution1:
自定义变量,union all
# Write your MySQL query statement below select username,activity,startDate,endDate from ( select t1.*, @rk:=if(@name=t1.username,@rk+1,1) as rank, @name:=username as name from ( select * from UserActivity u order by username, startDate DESC )t1, (select @rk:=0, @name:=null) p )t2 where rank=2 union all select username, activity, startDate, endDate from UserActivity group by username having count(startDate)=1
Solution2:
先排除掉count>1 且最近的那一项, 再找最近的一项。
# Write your MySQL query statement below select u.* from UserActivity u join ( select username, max(startDate) as second from UserActivity where (username,startDate) not in (select username,max(startDate) as mx from UserActivity group by username having count(username)>1 ) group by username )t1 on u.username=t1.username and u.startDate=t1.second