2012-09-27 94 views
1

我有一個簡單的媒體庫,根據代碼示例中的日期排序基於日期的相冊。在我的專輯中,我有一個刪除媒體的「垃圾」專輯。如何保留ORDER BY albums.date DESC,但始終將「Trash」專輯設置爲訂單中最後一個?該專輯在「標題」欄中,並且始終稱爲「垃圾」。自定義MYSQL自定義排序順序

感謝您的幫助......

$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

退房這個問題:那就是http://stackoverflow.com/questions/3180032/mysql-ordering-alphabetically-except-for-one-entry – McKracken

回答

2

你可以採取ORDER BY條款的優勢CASE

SELECT... 
FROM... 
WHERE.. 
ORDER BY (CASE 
       WHEN albums.title = 'TRASH' 
       THEN 1 
       ELSE 0 
      END) ASC, albums.date DESC 
+0

完美,約翰 - 感謝您的幫助! ! – Chris

+0

@xtiaan歡迎您:) –

+0

您是否介意快速解釋THEN 1 ELSE 0的作用? – Chris

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 
+0

感謝您的信息,邁克爾 - 我很感激! – Chris