1

コード例に示すように、日付に基づいてアルバムを並べ替える単純なメディア ギャラリーがあります。アルバムの中には、削除されたメディア用の「ゴミ箱」アルバムがあります。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");
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より大きな数値を値に割り当てるを使用する必要があるため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
于 2012-09-27T02:10:11.063 に答える