1. ホーム
  2. mysql

[解決済み] SQLのGroup ByとOrder By

2022-03-06 16:49:02

質問

タグのテーブルがあり、リストから最も多いカウントのタグを取得したい。

サンプルデータは以下のようなものです。

id (1) tag ('night')
id (2) tag ('awesome')
id (3) tag ('night')

を使って

SELECT COUNT(*), `Tag` from `images-tags`
GROUP BY `Tag`

は、私が探しているデータを完璧に返してくれます。しかし、タグの数が最も多いものが最初に来るように整理し、最初の20個ほどを送信するように制限したいのです。

こんなことをやってみました...

SELECT COUNT(id), `Tag` from `images-tags`
GROUP BY `Tag`
ORDER BY COUNT(id) DESC
LIMIT 20

と表示され、「Invalid use of group function - ErrNr 1111"」と表示され続けます。

何が間違っているのでしょうか?

MySQL 4.1.25-Debianを使用しています。

解決方法を教えてください。

MySQL のすべてのバージョンで、SELECT リストのアグリゲートのエイリアスを作成し、エイリアスの順に並べるだけです。

SELECT COUNT(id) AS theCount, `Tag` from `images-tags`
GROUP BY `Tag`
ORDER BY theCount DESC
LIMIT 20