0

在我问的上一个问题中,有人建议MAX(value)优先考虑字母化的语法

如何使用 GROUP BY 检索按字母排序优先的结果集

但是,我正在处理该CASE语句并且 usingMAX(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 回答