3

問題があります。データベースを参照してください。

-------------------
| id | article_id |
-------------------
| 1  |      1     |
| 2  |      1     |
| 3  |      1     |
| 4  |      2     |
| 5  |      2     |
| 6  |      3     |
| 7  |      3     |
| 8  |      3     |
| 9  |      3     |
| 10 |      3     |

そして、私はこのようなものを受け取りたいです(投票による順序、最大から最小へ):

---------------------------
| id | article_id | votes |
---------------------------
| 1  |      3     |    5  |
| 2  |      1     |    3  |
| 3  |      2     |    2  |

適切なSQLクエリを作成するのを手伝っていただけませんか。

4

2 に答える 2

4
SET @currentRow = 0;
SELECT @currentRow := @currentRow + 1 AS id, t.article_id, t.c AS `votes`
FROM (
    SELECT article_id, count(*) as `c`
    FROM table_votes
    GROUP BY article_id
    ) t
ORDER BY t.c DESC

このコンテキストではこのようなid列を選択できず、「期待される結果」が正しくないことに注意してください。最大限に適応させてみました。

乾杯

于 2012-05-27T19:10:52.507 に答える
3
SELECT article_id, COUNT(article_id) AS votes
FROM votes_table
GROUP BY article_id
ORDER BY votes DESC;
于 2012-05-27T19:13:00.727 に答える