INNER JOIN SQL ORDER BY NOT WORKING

时间:2017-12-07 16:08:35

标签: mysql sql

WORKING!

SELECT s.*, COUNT(rs.id_segreto) as tot
FROM Segreti s INNER JOIN
     Reazioni_Segreti rs
     ON s.id = rs.id_segreto
WHERE rs.tipo_reazione = 'mi_piace'
GROUP BY s.id
ORDER BY tot DESC
LIMIT 10;

但它只打印了一行。

$rs_result = mysql_query($sql);
while ($row = mysql_fetch_array($rs_result, MYSQL_ASSOC)) {
echo $row['id']."<br>";
}

为什么会这样?我错了什么?

1 个答案:

答案 0 :(得分:1)

这是MySQL允许的语法,但SQL标准没有 - 其他数据库也没有。您在SELECT中有多个未分组的字段,但COUNT()将其转换为聚合查询。

如果没有group by,则此类查询始终只返回一行。

我还建议使用表别名:

SELECT s.*, COUNT(rs.id_segreto) as tot
FROM Segreti s INNER JOIN
     Reazioni_Segreti rs
     ON s.id = rs.id_segreto
WHERE rs.tipo_reazione = 'mi_piace'
GROUP BY s.id
ORDER BY tot DESC
LIMIT 10;

请注意,s.id允许使用GROUP BY(而不是列出所有列) - 即使在ANSI下 - 假设id被定义为唯一的桌子。