簡體   English   中英

通過不工作來加入SQL ORDER

[英]INNER JOIN SQL ORDER BY NOT 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>";
}

怎么會這樣 我錯了嗎?

這是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;

請注意,即使在ANSI中,也可以在GROUP BY使用s.id (而不是列出所有列), s.id是假設id在表中定義為唯一。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM