0

私が尋ねた以前の質問で、誰かがMAX(value)アルファベット順を優先する構文を提案しました

GROUP BY を使用して、アルファベット順を優先して結果セットを取得する方法

ただし、私はCASEステートメントを扱っており、使用MAX(CASE statement)は構文的に正しくありません。

SELECT id, 
CASE
    WHEN filename LIKE '%.mp3' THEN 'song'
    ELSE 'other' END as type
FROM filenames

1   song
2   song
2   other
3   other
3   song

SELECT id, 
CASE
    WHEN filename LIKE '%.mp3' THEN 'song'
    ELSE 'other' END as type
FROM filenames
GROUP BY id;

1   song
2   song
3   other

typeアルファベット順で最後に来るフィールドの優先順位を付けるにはどうすればよいですか? 元。結果セットは

1   song
2   song
3   song

可能であれば、ネストされたステートメントを避けたいと思います。MAX(type)これは構文で行うことができますか?

4

1 に答える 1

0

以下を使用できます

SELECT id, 
CASE
    WHEN filename LIKE '%.mp3' THEN 'song'
    ELSE 'other' END as type
FROM filenames
GROUP BY id DESC;

DESC は降順になります

于 2012-04-25T11:31:43.470 に答える