Mysql 修改具有左联接和内部联接的查询
当满足以下条件时,下面的查询汇总了MySQL表“comment”中的Mysql 修改具有左联接和内部联接的查询,mysql,Mysql,当满足以下条件时,下面的查询汇总了MySQL表“comment”中的点: 当找到l.username='$profile'时,loginid 所有的submissionids都包含上面第1条中的loginid 找到上面#2中带有submissionids的所有commentids,并对相应的点进行求和 现在,我如何进行一个不同的查询,返回上面3中所有注释的数组,而不是对点进行求和 以下是涉及的MySQL表: 登录: logind用户名创建激活 提交: submissionid loginid 评
点:
当找到l.username='$profile'
时,loginid
所有的submissionid
s都包含上面第1条中的loginid
找到上面#2中带有submissionid
s的所有commentid
s,并对相应的点进行求和
现在,我如何进行一个不同的查询,返回上面3中所有注释的数组,而不是对点进行求和
以下是涉及的MySQL表:
登录:
logind用户名创建激活
提交:
submissionid loginid
评论:
commentid submissionid points comment
查询:
SELECT
l.loginid,
l.username,
l.created,
l.activated,
COALESCE(scs.total, 0) AS commentsreceivedvalue
FROM login l
LEFT JOIN (
SELECT S2.loginid, SUM(C2.points) AS total
FROM submission S2
INNER JOIN comment C2
ON S2.submissionid = C2.submissionid
GROUP BY S2.loginid
) scs ON scs.loginid = l.loginid
WHERE l.activated = 1
AND l.username = '$profile'
GROUP BY l.loginid
ORDER BY commentsreceivedvalue DESC
这不是很简单吗
SELECT l.loginid, l.username, l.created, l.activated, scs.commentid, scs.comment
FROM login AS l
LEFT JOIN (SELECT S2.loginid, c2.commentid, c2.comment
FROM submission AS S2
JOIN comment AS C2 ON S2.submissionid = C2.submissionid
) AS scs ON scs.loginid = l.loginid
WHERE l.activated = 1
AND l.username = '$profile'
ORDER BY scs.commentid DESC;
原始版本中的外部组BY没有做任何有用的事情。原文中的顺序BY在这里被注释ID的倒序所取代,这近似于倒序的时间顺序(换句话说,最近的第一次)