Упорядочить данные элементы с помощью SQL ORDER BY - PullRequest
1 голос
/ 06 января 2011

Дано:

  SELECT projectID, urlID, COUNT(1) AS totalClicks, projectPage,
         (SELECT COUNT(1)
           FROM   tblStatSessionRoutes, tblStatSessions
           WHERE  tblStatSessionRoutes.statSessionID = tblStatSessions.ID
           AND    tblStatSessions.projectID = tblAdClicks.projectID
           AND    (tblStatSessionRoutes.leftPageID = tblAdClicks.projectPage OR
                 tblStatSessionRoutes.rightPageID = tblAdClicks.projectPage)) AS totalViews
  FROM   tblAdClicks
  WHERE  projectID IN (SELECT projectID FROM tblProjects WHERE userID = 5)
  GROUP  BY projectID, urlID, projectPage

Мне нужно упорядочить их так, чтобы все проекты с ID = 111 были ПОСЛЕДНИМИ в возвращенном наборе данных.

Так, например, он может вернуть:

Project ID
---------
100
100
100
156
156
143
122
111
111
111
190
154
87

Но мне нужно, чтобы все 111 отображались в конце списка без использования двух запросов: один для выбора 111, а другой для выбора остальных, к сожалению, недостаточно хорош, поскольку это довольно ресурсоемкий запрос.

Ответы [ 2 ]

5 голосов
/ 06 января 2011
ORDER BY
 CASE projectID WHEN 111 THEN 1 ELSE 0 END,
 projectID /* etc... */
0 голосов
/ 06 января 2011

добавить

order by cast (projectID as integer)
...