統計のためにいくつかの言語のサイトをカウントし、次のクエリを使用したいと考えています。
SELECT `language_id` , count( * ) AS 'num'
FROM sites
WHERE `language_id` != 0
GROUP BY `language_id`
ORDER BY 'num' ASC
ただし、結果はnum
フィールドごとに並べ替えられません。SQL のどこが間違っていますか?
問題はnum
、単一引用符'
文字を使用してエイリアスを引用していることです。これは、エイリアスの作成ではたまたま有効ですが、ORDER BY
句ではリテラル文字列として扱われます。結果全体で不変であるため、並べ替え順序には影響しません。バッククォート文字は、両方の句で有効です。代わりに試してください:
SELECT `language_id` , count( * ) AS `num`
FROM sites
WHERE `language_id` != 0
GROUP BY `language_id`
ORDER BY `num` ASC