gpt4 book ai didi

mysql - 选择具有最新日期的值并按另一列分组

转载 作者:行者123 更新时间:2023-11-29 04:47:14 27 4
gpt4 key购买 nike

See My Table and query here (on sqlfiddle)

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 * FROM network order by uid,
`date` desc) t4 group by uid) t3) and
(left_leg>=500 or right_leg>=500))t1

想要从网络中获取每个 uid 的最新日期的数据想要选择 left_leg >=500 或 right_leg >=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 的最大日期
  • 然后找到关联 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 的部分,则记录不会显示在结果中。如果您想要腿数 > 500 的最新记录,则必须移入腿过滤器。

关于mysql - 选择具有最新日期的值并按另一列分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17225855/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com