繁体   English   中英

自定义MYSQL自定义排序顺序

[英]Custom MYSQL Custom Sort Order

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

您可以利用ORDER BY子句上的CASE

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

您需要使用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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM