gpt4 book ai didi

mysql - 连接两个表,但获取第二个表中每组的最后一条记录 mysql

转载 作者:行者123 更新时间:2023-11-29 20:06:14 25 4
gpt4 key购买 nike

我有两个表:用户和访问。在访问中,每个用户都有多次访问。我想要做的是连接这两个表来获取用户数据,如 id、user_name、User_email 和上次访问记录,如 url、unix_time。我使用了此代码,但现在需要很长时间才能完成以仅获取过去两周内没有访问过的用户

表用户:

user_id    user_name        user_email
1 foo foo@mail.com
2 bar bar@mail.com

表访问量

   id       user_id        unix_time              page
1 1 (unixtime value) visited page url
2 2 (unixtime value) visited page url
3 1 (unixtime value) visited page url
4 2 (unixtime value) visited page url

预期结果是:(访问表中最后一次访问的每个用户)

 id    user_id    user_name   user_email      unix_time         page
3 1 foo foo@mail.com (unixtime value) visited page url
4 2 bar bar@mail.com (unixtime value) visited page url

查询:

$two_weeks_before = date('Y-m-d',strtotime("-2 weeks"));
$month_before = date('Y-m-d',strtotime("-1 month"));

SELECT m1.* FROM visits_log m1
LEFT JOIN visits_log m2 ON (m1.user_id = m2.user_id AND m1.id < m2.id)
WHERE m2.id IS NULL and m1.admin != '1' and
from_unixtime(m1.unix_time) < '$two_weeks_before' and
from_unixtime(m1.unix_time) > '$month_before'

所以我正在寻找一个可以获得相同结果但执行速度更快的查询。

最佳答案

您的问题仍未 100% 清楚,您的数据样本也不完整。

但这是我的尝试,您可以从这里开始:

http://sqlfiddle.com/#!9/7a9b7/1

SELECT u.*, v.* FROM users u
LEFT JOIN visits v
ON u.user_id = v.user_id
AND v.unix_time > now()- INTERVAL 2 WEEK

关于mysql - 连接两个表,但获取第二个表中每组的最后一条记录 mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40343136/

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