Mysql 选择具有最新日期的值,并按其他列分组
Myquery正在获取我需要的精确结果,但当数据超过1000行时,它需要很长时间。我需要使它高效Mysql 选择具有最新日期的值,并按其他列分组,mysql,sql,Mysql,Sql,Myquery正在获取我需要的精确结果,但当数据超过1000行时,它需要很长时间。我需要使它高效 Select `id`, `uid`, case when left_leg > right_leg then left_leg else right_leg end as Max_leg,`date` from ( SELECT * FROM network t2 where id in (select id from (select id,uid,`date` from (SELECT *
Select `id`, `uid`, case when left_leg > right_leg then left_leg
else right_leg end as Max_leg,`date` from
(
SELECT * FROM network t2 where id in (select id from
(select id,uid,`date` from (SELECT * FROM network order by uid,
`date` desc) t4 group by uid) t3) and
(left_leg>=500 or right_leg>=500))t1
要根据每个uid的最新日期从网络中拾取数据吗
想要选择左腿>=500或右腿>=500的数据
只想选择两条腿中较大的一条腿(左或右)
整个查询可能有一些问题,但核心问题是此代码
SELECT * FROM network t2 where id in (select id from
(select id,uid,`date` from (SELECT * FROM network order by uid,
`date` desc) t4 group by uid) t3)
我想改进此查询,因为当数据增长时,它获取结果的速度非常慢。在(uid,date)上添加索引:
试着做一些类似的事情:
SELECT n.id, n.uid, greatest( n.right_leg, n.left_leg ) as max_leg, n.date
FROM
( SELECT uid,max(date) as latest FROM network
WHERE right_leg>=500 OR left_leg >=500
GROUP BY uid
) ng
JOIN network n ON n.uid = ng.uid AND n.date = ng.latest
在(uid,日期)上添加索引:
试着做一些类似的事情:
SELECT n.id, n.uid, greatest( n.right_leg, n.left_leg ) as max_leg, n.date
FROM
( SELECT uid,max(date) as latest FROM network
WHERE right_leg>=500 OR left_leg >=500
GROUP BY uid
) ng
JOIN network n ON n.uid = ng.uid AND n.date = ng.latest
根据您的描述:
- 首先查找每个uid的最大日期
- 然后找到关联ID
- 根据腿部值进行过滤
SELECT id, uid, GREATEST(left_leg, right_leg) as max_leg
FROM network
WHERE (uid, `date`) IN (SELECT uid, MAX(`date`)
FROM network
GROUP BY uid)
AND (left_leg > 500 or right_leg > 500)
请注意,这意味着如果uid的最新日期没有大于500的段,则记录不会显示在结果中。如果您想要legs>500的最新记录,则必须移入leg筛选器。获取您的描述:
- 首先查找每个uid的最大日期
- 然后找到关联ID
- 根据腿部值进行过滤
SELECT id, uid, GREATEST(left_leg, right_leg) as max_leg
FROM network
WHERE (uid, `date`) IN (SELECT uid, MAX(`date`)
FROM network
GROUP BY uid)
AND (left_leg > 500 or right_leg > 500)
请注意,这意味着如果uid的最新日期没有大于500的段,则记录不会显示在结果中。如果希望最新记录的legs>500,则必须移入leg筛选器。是否可以使用真实数据发布解释?请参阅联接,然后查看最大值。是否可以使用真实数据发布解释?请参阅联接,然后查看最大值。