TP3.2.3 sql怎么样才能取出 下面 每天绿色线的数据

TP3.2.3sql怎么样才能取出下面每天绿色线的数据,谢谢!每天每个产品(产品每天可以重复的)最后一条数据取出!... TP3.2.3 sql怎么样才能取出 下面 每天绿色线的数据,谢谢!每天每个产品(产品每天可以重复的)最后一条数据取出! 展开
 我来答
xiaodim
2019-04-21 · 超过37用户采纳过TA的回答
知道小有建树答主
回答量:88
采纳率:0%
帮助的人:43.3万
展开全部

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();
longrenyingdc8ecb1
2019-04-20 · TA获得超过1万个赞
知道大有可为答主
回答量:6032
采纳率:82%
帮助的人:2364万
展开全部
应该可以用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支持子查询,那么这个应该没什么问题,*那块可以换成具体的字段
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友0d104b7f
2019-04-20
知道答主
回答量:19
采纳率:0%
帮助的人:1.7万
展开全部
没有条件吗?
追问
没有,就是订单查看
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2019-04-20
展开全部
百度一下,你就知道
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式