Mysql 修改具有左联接和内部联接的查询

Mysql 修改具有左联接和内部联接的查询,mysql,Mysql,当满足以下条件时,下面的查询汇总了MySQL表“comment”中的点: 当找到l.username='$profile'时,loginid 所有的submissionids都包含上面第1条中的loginid 找到上面#2中带有submissionids的所有commentids,并对相应的点进行求和 现在,我如何进行一个不同的查询,返回上面3中所有注释的数组,而不是对点进行求和 以下是涉及的MySQL表: 登录: logind用户名创建激活 提交: submissionid loginid 评

当满足以下条件时,下面的查询汇总了MySQL表“comment”中的
点:

  • 当找到
    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的倒序所取代,这近似于倒序的时间顺序(换句话说,最近的第一次)