【发布时间】:2015-05-14 13:58:50
【问题描述】:
我知道我做错了 - 它需要超过 10 秒的时间才能返回结果,其中只有 3000 行数据...
我有 3 个表:
users
身份证
用户名
DATA:
1|tom
2|dick
3|harry
帖子
身份证
id_users
DATA:
1|1
2|1
3|1
4|2
5|2
6|3
cronjobs
身份证
id_post
id_wall
DATA: id|id_post|id_wall
1|1|1
2|1|2
3|1|3
4|1|4
5|1|5
6|2|5
7|4|3
8|6|3
9|4|4
用户会发帖 该帖子将放置在一面或多面墙上并存储在 cronjobs 表中。 cronjobs 上的 id 是自动递增的。 我需要在每面墙上获取用户名和最后一篇文章。 在上面的例子中
Dick 是最后一个在 4 号墙上发帖的人
哈利是最后一个在 3 号墙上发布 6 号帖子的人
汤姆是最后一个用帖子 2 在 5 墙上发帖的人
汤姆是最后一个用帖子 1 在 2 墙上发帖的人
汤姆是最后一个在 1 号墙上发帖的人
这是我当前使用的 qry,我知道在其中使用带有 select 的 IN 子句,正在扼杀这个....
SELECT
c.id,
c.id_post,
c.id_wall AS id_wall,
p.id_users AS user_id,
u.NAME AS username
FROM
cronjobs c,
posts p,
users u
WHERE c.id IN
(SELECT MAX(id)
FROM
cronjobs
GROUP BY id_wall)
AND c.id_post = p.id
AND p.id_users = u.id
ORDER BY c.id
感谢任何帮助!
【问题讨论】: