4

たとえば、すべてのブログ投稿のIDを選択してから、そのブログ投稿に関連付けられているコメントの数を選択したいとします。GROUPBYまたはORDER BYを使用して、返されるリストが投稿ごとのコメント数の順になるようにするにはどうすればよいですか。 ?

データを返すこのクエリがありますが、希望する順序ではありませんか?グループを変更しても違いはありません。

SELECT p.ID, count(c.comment_ID) 
FROM wp_posts p, wp_comments c 
WHERE p.ID = c.comment_post_ID 
GROUP BY c.comment_post_ID;
4

3 に答える 3

4

私はSQL92より前の構文に精通していないので、私が精通している方法でそれを表現します。

SELECT c.comment_post_ID, COUNT(c.comment_ID)
FROM wp_comments c
GROUP BY c.comment_post_ID
ORDER BY COUNT(c.comment_ID) -- ASC or DESC

どのデータベースエンジンを使用していますか?SQL Serverでは、少なくとも、postsテーブルからより多くのデータを取得しない限り、結合の必要はありません。参加して:

SELECT p.ID, COUNT(c.comment_ID)
FROM wp_posts p
JOIN wp_comments c ON c.comment_post_ID = p.ID
GROUP BY p.ID
ORDER BY COUNT(c.comment_ID)
于 2009-05-31T22:49:53.707 に答える
3
SELECT p.ID, count(c.comment_ID) AS [count]
FROM wp_posts p, wp_comments c 
WHERE p.ID = c.comment_post_ID 
GROUP BY c.comment_post_ID;
ORDER BY [count] DESC
于 2009-05-31T22:45:36.353 に答える
0

コメントテーブルに関連データがない可能性があるため、投稿IDでグループ化してみてください。また、JOINステートメントを学習してください。これは非常に役立ち、より良い結果が得られます。

SELECT p.ID, count(c.comment_ID) 
FROM wp_posts p
LEFT JOIN wp_comments c ON (p.ID = c.comment_post_ID)
GROUP BY p.ID

また、SQLクエリの過程でそのような状況に遭遇しました:)

于 2012-11-20T23:46:47.763 に答える