1

我有一个简单的媒体库,可以根据代码示例中的日期对专辑进行排序。在专辑中,我有一张用于删除媒体的“垃圾”专辑。如何保留 ORDER BY albums.date DESC 但始终将“垃圾”专辑设置为最后一个?专辑在“标题”列中,总是被称为“垃圾”。

谢谢你的帮助...

$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");
4

2 回答 2

2

您可以利用CASEonORDER BY子句

SELECT...
FROM...
WHERE..
ORDER BY   (CASE 
               WHEN albums.title = 'TRASH'
               THEN 1
               ELSE 0
           END ) ASC, albums.date DESC
于 2012-09-27T02:09:53.720 回答
1

您将需要使用为值ORDER BY CASE分配更高数字的an Trash,因此它们的排序比其他值晚。值不是Trash零,而是Trash1。零首先排序!

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
于 2012-09-27T02:10:11.063 回答