Mysql 在联接的派生表查询中使用LIMIT
我使用派生表(MySQL的最新版本)从其他表中获取计数和数据,并将其添加到我的主结果集中。左外部联接中的一个小查询给我带来了一个问题。我正在尝试使用限制1条件获取该博客成员最近发表评论的日期。下面的整个查询获取成员的帐户详细信息和活动/登录统计信息Mysql 在联接的派生表查询中使用LIMIT,mysql,sql,Mysql,Sql,我使用派生表(MySQL的最新版本)从其他表中获取计数和数据,并将其添加到我的主结果集中。左外部联接中的一个小查询给我带来了一个问题。我正在尝试使用限制1条件获取该博客成员最近发表评论的日期。下面的整个查询获取成员的帐户详细信息和活动/登录统计信息 SELECT mem.member_id, mem.screen_name, mem.firstname, mem.lastname, mem.email, mem.add1, mem.add2, mem.town, mem.county, mem.
SELECT mem.member_id, mem.screen_name, mem.firstname, mem.lastname,
mem.email, mem.add1, mem.add2, mem.town, mem.county,
mem.post_code, mem.country_code, mem.country_name, mem.joined, mem.member_status,
IFNULL(rep.rep,0) as reputation,
IFNULL(com.cnt,0) as comments,
com1.lcomm as last_comment
FROM members AS mem
LEFT OUTER JOIN (
SELECT member_id, SUM(awarded_what) as rep
FROM members_reputation
GROUP BY member_id) rep
ON mem.member_id = rep.member_id
LEFT OUTER JOIN (
SELECT member_id, COUNT(comment_id) as cnt
FROM blog_comments
GROUP BY member_id) com
ON mem.member_id = com.member_id
LEFT OUTER JOIN (
SELECT member_id, posted as lcomm
FROM blog_comments
ORDER BY posted DESC LIMIT 1) com1 **** problem with LIMIT
ON mem.member_id = com1.member_id
// more left outer join sub queries to other tables
WHERE mem.member_id = 1
GROUP BY mem.member_id
我将查询标记为问题的地方就是问题所在。如果我使用posted DESC LIMIT 1的订单,即使该成员有4条注释,它有时不会返回最后注释日期,但有时会返回-不确定模式。如果我取消限制1,它可以正常工作,但我担心它会返回所有评论日期,而不仅仅是它自己的最新日期,这会在DB增长时给我带来问题
这是怎么回事?为什么限制1有时不返回最后的注释日期?在没有限制条件的情况下,我的查询是否返回所有注释日期?解释/建议会很棒。这是你的问题
LEFT OUTER JOIN (
SELECT member_id, posted as lcomm
FROM blog_comments
ORDER BY posted DESC LIMIT 1) com1 **** problem with LIMIT
ON mem.member_id = com1.member_id
在你的另一个左边加入节中,你正在做一个由。。。
但是在上面的问题一中,您依赖于join子句将您的集合限制为member_id,但是您已经在那时订购并限制了
这意味着有时(一个)结果与您的联接条件不匹配,从而导致空lcomm
你需要这样一个where子句
LEFT OUTER JOIN (
SELECT member_id, posted as lcomm
FROM blog_comments
WHERE member_id = X
ORDER BY posted DESC LIMIT 1) com1
ON mem.member_id = com1.member_id
这是你的问题
LEFT OUTER JOIN (
SELECT member_id, posted as lcomm
FROM blog_comments
ORDER BY posted DESC LIMIT 1) com1 **** problem with LIMIT
ON mem.member_id = com1.member_id
在你的另一个左边加入节中,你正在做一个由。。。
但是在上面的问题一中,您依赖于join子句将您的集合限制为member_id,但是您已经在那时订购并限制了
这意味着有时(一个)结果与您的联接条件不匹配,从而导致空lcomm
你需要这样一个where子句
LEFT OUTER JOIN (
SELECT member_id, posted as lcomm
FROM blog_comments
WHERE member_id = X
ORDER BY posted DESC LIMIT 1) com1
ON mem.member_id = com1.member_id
连接中的三个(“
是语法错误。CopyIta故障?@MarcB:谢谢,已经编辑过。确实是复制粘贴问题!:)连接中的三个(“
是语法错误。CopyIta故障?@MarcB:谢谢,已经编辑过。确实是复制粘贴问题!:)太棒了,发现得好!如果可以的话,我会+10:)太棒了,太棒了!如果可以,我会+10:)