姬長信(Redy)

mysql – SQL计算所有行而不是计算单个行


我有一个SQL语句,它从数据库中请求数据.
SELECT `ID`, `To`, `Poster`, `Content`, `Time`, ifnull(`Aura`,0) as `Aura` FROM (
    SELECT * FROM (
        SELECT DISTINCT * FROM messages m
        INNER JOIN
        (
            SELECT Friend2 as Friend FROM friends WHERE Friend1 = '1'
            UNION ALL
            SELECT Friend1 as Friend FROM friends WHERE Friend2 = '1'
        ) friends ON m.Poster = friends.`Friend`
        UNION ALL SELECT DISTINCT *, '1' FROM messages where `Poster`='1'
    ) var
    LEFT JOIN
    (
        select `ID` as `AuraID`, `Status` as `AuraStatus`, count(*) as `Aura`
            from messages_aura
    ) aura ON (var.Poster = aura.AuraID AND var.ID = aura.AuraStatus)
) final

GROUP BY `ID`, `Poster`
ORDER BY `Time` DESC LIMIT 10

这是我的messages_aura表格布局.它显示ID,状态和用户ID.

以下是上述声明的输出.

(上面屏幕截图中的ID是指下面的海报,上面屏幕截图中的状态是指下面的ID)

该声明应该给最下面的Aura计数为1,顶行的Aura计数为2.出错了什么?