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>";
}
为什么会这样?我错了什么?
答案 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
被定义为唯一的桌子。