mysql заставляет запись на вершину - PullRequest
1 голос
/ 21 февраля 2011

Я получаю список людей, посещающих курс, из таблицы courses2011, запрос работает, но клиент попросил нас сделать так, чтобы человек, выполняющий запрос (они вошли на веб-сайт), появился в верхней части списка.,Люди не будут на курсе полный рабочий день, поэтому даты в моем запросе.

Вот мой текущий запрос:

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

Скажите, что к контакту "12345" подключенsite - Как мне сделать запрос, чтобы он появился первым в списке.

Ответы [ 6 ]

3 голосов
/ 21 февраля 2011

С предложением ORDER BY:

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

Конечно, вы можете иметь дополнительные поля ORDER BY в предложении ORDER BY.И, конечно, вы можете прочитать '12345' из таблицы сеанса или использовать переменную связывания или любой другой способ, которым вы используете для идентификации вошедшего в контакт.

2 голосов
/ 21 февраля 2011

Один из вариантов - добавить заказ с условием:

ORDER BY IF(contactid = "12345",0,1)
1 голос
/ 21 февраля 2011
ORDER BY FIELD(contactid,12345) DESC
1 голос
/ 21 февраля 2011
ORDER BY contactid = 12345 DESC
1 голос
/ 21 февраля 2011

Был такой же запрос на SO.Посмотрите, если это решит вашу проблему.

0 голосов
/ 21 февраля 2011

вы можете использовать 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'))
;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...