我有一个简单的媒体库,可以根据代码示例中的日期对相册进行排序。在这些专辑中,我有一张删除媒体的“Trash”专辑。如何保留ORDER BY albums.date DESC但始终将“Trash”专辑设置为订单中的最后一个?专辑位于“标题”列中,并且始终称为“垃圾”。
感谢您的帮助......
$query = mysql_query("SELECT albums.*,photos.path FROM albums LEFT JOIN photos ON albums.albumCover=photos.id WHERE albums.user='$siteUserID' ORDER BY albums.date DESC");
答案 0 :(得分:2)
您可以利用CASE
ORDER BY
条款
SELECT...
FROM...
WHERE..
ORDER BY (CASE
WHEN albums.title = 'TRASH'
THEN 1
ELSE 0
END ) ASC, albums.date DESC
答案 1 :(得分:1)
您需要使用ORDER BY CASE
为Trash
值分配更高的数字,因此比其他值更晚排序。值Trash
的值为零,Trash
的值为1.零首先排序!
SELECT
albums.*,
photos.path
FROM
albums
LEFT JOIN photos ON albums.albumCover=photos.id
WHERE albums.user='$siteUserID'
ORDER BY
CASE WHEN albums.title = 'Trash' THEN 1 ELSE 0 END,
/* Then suborder the zeros and ones by date */
albums.date DESC