1

統計のためにいくつかの言語のサイトをカウントし、次のクエリを使用したいと考えています。

SELECT `language_id` , count( * ) AS 'num'
FROM sites
WHERE `language_id` != 0
GROUP BY `language_id`
ORDER BY 'num' ASC

ただし、結果はnumフィールドごとに並べ替えられません。SQL のどこが間違っていますか?

4

1 に答える 1

5

問題はnum、単一引用符'文字を使用してエイリアスを引用していることです。これは、エイリアスの作成ではたまたま有効ですが、ORDER BY句ではリテラル文字列として扱われます。結果全体で不変であるため、並べ替え順序には影響しません。バッククォート文字は、両方の句で有効です。代わりに試してください:

SELECT `language_id` , count( * ) AS `num`
FROM sites
WHERE `language_id` != 0
GROUP BY `language_id`
ORDER BY `num` ASC
于 2012-08-28T09:40:49.667 に答える