select * from (
select platform_id ,role_id ,log_time ,
lag(log_time, 1, 0) over(partition by platform_id ,role_id order by log_time ) as yes_log_time,
if(log_time -lag(log_time, 1, 0) over (partition by platform_id ,role_id order by log_time)>3600,1,2) state
from logs_1004 where
log_time < UNIX_TIMESTAMP(“2022-07-21 00:00:00”)
and log_time >= UNIX_TIMESTAMP(“2022-07-20 00:00:00”)
and log_type != ‘xxxxxx’ order by log_time
) a
我的这个sql里层使用了lag窗口函数 外面套了select * 查询查完了以后 数据已经按照platform_id role_id log_time 排序了
但是 如果用里面的 子查询单独查 数据只是按照log_time进行了排序 这是为什么
请教下
(刚刚表述的现象不太准确,修改了一下)
这个case子查询里的order by没有意义,规划器会忽略掉。直接查子查询里的order by则会生效
1赞
感谢回复奥 这里我没有疑问了 