Настроить SQL-запрос, чтобы сначала появилась запись? - PullRequest
5 голосов
/ 21 февраля 2012

Как можно настроить приведенный ниже запрос, чтобы он всегда возвращал элемент с MemberID = 'xxx' в качестве первой строки

SELECT * FROM Members

Ответы [ 6 ]

12 голосов
/ 21 февраля 2012
select * from Members
order by case when MemberID = XXX then 0 else 1 end
6 голосов
/ 21 февраля 2012

Это должно сработать, и это также позволит вам упорядочить оставшиеся элементы по MemberID (при условии xxx = 12 в этом примере)

SELECT *
FROM Members
ORDER BY CASE WHEN MemberID=12 THEN NULL ELSE isnull(MemberID,0) END

Если столбец memberID не может содержать нули, вы можете избежать неприятностей, которые могут работать немного лучше.

SELECT *
FROM Members
ORDER BY CASE WHEN MemberID=12 THEN NULL ELSE MemberID END
0 голосов
/ 21 февраля 2012

Более надежное решение, если у вас есть более одной записи, которая должна быть перемещена к вершине, или если у вас есть определенный порядок для нескольких записей, это добавить столбец ResultsOrder в вашу таблицу или даже другую таблицу MemberOrder (memberid, resultorder). Заполните результат с большими числами и ...

Select m.*
From Members m
  Left Join MemberOrder mo on m.MemberID=mo.MemberID
Order by coalesce(mo.resultorder, 0) DESC
0 голосов
/ 21 февраля 2012
SELECT * FROM `Members` WHERE `MemberID` = '[ID]' LIMIT 1 UNION SELECT * FROM `Members`

Это должно работать.Проверено на моем экземпляре базы данных.Выбранный идентификатор всегда первый.

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

попробуйте это:

SELECT * FROM Members
ORDER BY IF(x.MemberId = XXX, -1, ABS(x.MemberId))
0 голосов
/ 21 февраля 2012
SELECT
  CASE WHEN MemberID = 'xxx' AS 1 ELSE 0 END CASE AS magic,
  *
FROM Members
ORDER BY magic DESC

Синтаксис может варьироваться в зависимости от года дБ, но я надеюсь, что вы поняли.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...