SQL: 如何按降序排列属性,但它的第二个字符需要升序

SQL: How to Order By the attributes in Descending but second character of it need to be Ascending Order

如何在 MySQL 中生成此输出?

首先根据专辑格式降序排列专辑,然后按升序排列曲目。

我可以用这个命令输出:

SELECT album_singer, album_name, album_format_name, album_tracks
FROM album, album_format
WHERE album.Album_Type_ID = album_format.Album_Format_ID
ORDER BY album_format_name DESC, album_tracks ASC

我可以产生的输出:

Vinyl
Vinyl
Digital
Compact Disc
Compact Disc
Compact Disc
Compact Disc
Compact Disc
Cassette
Cassette

我需要的输出:

Vinyl
Vinyl
Digital
Cassette
Cassette
Compact Disc
Compact Disc
Compact Disc
Compact Disc
Compact Disc

MySQL 的 field 对于自定义排序非常有用,如您的预期输出要求。 此外,正如 Dale K 在评论中提到的,隐式连接(在 from 子句中有多个项目)是一种过时的做法,您可能应该使用显式 join 子句:

SELECT   album_singer, album_name, album_format_name, album_tracks
FROM     album
JOIN     album_format ON album.Album_Type_ID = album_format.Album_Format_ID
ORDER BY FIELD(album_format_name, 'Vinyl', 'Digital', 'Cassette', 'Compact Disc'), 
         album_tracks ASC