TP3.2.3 sql怎么样才能取出 下面 每天绿色线的数据
TP3.2.3sql怎么样才能取出下面每天绿色线的数据,谢谢!每天每个产品(产品每天可以重复的)最后一条数据取出!...
TP3.2.3 sql怎么样才能取出 下面 每天绿色线的数据,谢谢!每天每个产品(产品每天可以重复的)最后一条数据取出!
展开
4个回答
展开全部
100W数据,假设每个产品每天都有记录(时间去到2020-06-20)
这条语句执行效率(所有日期): 一般(1.8秒) GROUP BY 日期好久 勉强用着
建议还是要加点条件,限制搜索范围 例如产品跟日期
where autime BETWEEN UNIX_TIMESTAMP('2019-4-19') AND UNIX_TIMESTAMP('2019-4-20')
原生查询
select id,product_id,DATE_FORMAT(FROM_UNIXTIME(autime), '%Y-%m-%d') AS day, MAX(id) as latest_id from test GROUP BY product_id,day
tp3.2
$model->field('id, product_id, DATE_FORMAT(FROM_UNIXTIME(autime), '%Y-%m-%d') AS day, MAX(id) as latest_id')
->group('product_id,day')
->select();
展开全部
应该可以用lead函数来做
我找了半天,勉强发现一点共同点,那就是你所选的绿框的下一行的num都等于1,这个应该可以勉强作为一个共同点来做。
TP我没用过,不知道支不支持lead函数,这里只能是按照一般的sql写法写一个。
select * from table where lead(num,1,1)over(order by id)=1
这个写法在sql上也未必完全正确,这种开窗函数我忘了能不能直接这么用了,只是一个意思。lead(num,1,1)over(order by id)的意思是安好id排序,下一行为num=1的数据。
如果不行的话,那么
select * from (select *,lead(num,1,1)over(order by id) leadnum from table) a where leadnum=1
如果TP支持子查询,那么这个应该没什么问题,*那块可以换成具体的字段
我找了半天,勉强发现一点共同点,那就是你所选的绿框的下一行的num都等于1,这个应该可以勉强作为一个共同点来做。
TP我没用过,不知道支不支持lead函数,这里只能是按照一般的sql写法写一个。
select * from table where lead(num,1,1)over(order by id)=1
这个写法在sql上也未必完全正确,这种开窗函数我忘了能不能直接这么用了,只是一个意思。lead(num,1,1)over(order by id)的意思是安好id排序,下一行为num=1的数据。
如果不行的话,那么
select * from (select *,lead(num,1,1)over(order by id) leadnum from table) a where leadnum=1
如果TP支持子查询,那么这个应该没什么问题,*那块可以换成具体的字段
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
没有条件吗?
追问
没有,就是订单查看
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2019-04-20
展开全部
百度一下,你就知道
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询