mysql强制记录到顶部

时间:2011-02-21 13:42:54

标签: sql mysql database join

我从课程表中获取了一份参加课程的人员列表,该查询正在运行,但是客户要求我们让查询人员(他们登录到网站)出现在列表顶部。人们将不会全程参加课程,因此查询中的日期。

这是我当前的查询:

select firstname, lastname, startdate, enddate, contactid, courseid, venueid from courses2011 where courseid = '4' 
and ((enddate > '2011-05-01') AND (startdate < '2011-05-20'))"

说contactid“12345”已登录到网站 - 如何进行查询,使它们首先显示在列表中。

6 个答案:

答案 0 :(得分:3)

使用ORDER BY子句:

SELECT [...]
ORDER BY CASE WHEN contactid = '12345' THEN 1 ELSE 0 END DESC

当然,您可以在ORDER BY子句中添加其他ORDER BY个字段。当然,您可以从会话表中读取'12345'或使用绑定变量或您用于识别登录联系人的任何方式。

答案 1 :(得分:2)

一个选项是按条件添加顺序,如:

ORDER BY IF(contactid = "12345",0,1)

答案 2 :(得分:1)

在SO上有类似的查询。看看this是否解决了您的问题。

答案 3 :(得分:1)

ORDER BY contactid = 12345 DESC

答案 4 :(得分:1)

ORDER BY FIELD(contactid,12345) DESC

答案 5 :(得分:-1)

您可以使用UNION,如下所示:

SELECT firstname, lastname, startdate, enddate, contactid, courseid, venueid
FROM courses2011
WHERE contactid = 12345

UNION

SELECT firstname, lastname, startdate, enddate, contactid, courseid, venueid
FROM courses2011
WHERE contactid <> 12345
  AND courseid = '4'
  AND ((enddate > '2011-05-01') AND (startdate < '2011-05-20'))
;