与SQL ORDER BY顺序给出元素

问题描述 投票:1回答:2

鉴于:

  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的,另一个选择休息不够好遗憾的是,这是一个相当耗费资源的查询。

sql relational-database sql-order-by
2个回答
5
投票
ORDER BY
 CASE projectID WHEN 111 THEN 1 ELSE 0 END,
 projectID /* etc... */

0
投票

order by cast (projectID as integer)
© www.soinside.com 2019 - 2024. All rights reserved.