自定义MYSQL自定义排序顺序

时间:2012-09-27 02:06:23

标签: mysql sql sql-order-by

我有一个简单的媒体库,可以根据代码示例中的日期对相册进行排序。在这些专辑中,我有一张删除媒体的“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");

2 个答案:

答案 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 CASETrash值分配更高的数字,因此比其他值更晚排序。值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