Упорядочить результаты в соответствии с порядком значений в выражении WHERE IN - PullRequest
13 голосов
/ 12 июля 2011

Есть ли способ заставить mysql возвращать результаты из базы данных участников в порядке, указанном в команде WHERE?

SELECT * 
FROM Members 
WHERE MemberID = "6" 
OR MemberId="3" 
OR MemberID="5"

В настоящее время он будет возвращать результаты, заказанные MemberID ASC, независимо от того, чтоЯ делаю.Я хочу, чтобы он вернулся на 6,3,5, то есть в том порядке, в котором я его спрашиваю.

Ответы [ 6 ]

32 голосов
/ 12 июля 2011
SELECT 
  * 
FROM 
  Members 
WHERE 
  MemberID IN ("6","3","5")
ORDER BY 
  FIELD(MemberID,"6","3","5");
16 голосов
/ 12 июля 2011
Select * from Members
WHERE MemberID = "6" or MemberId="3" or MemberID="5"
ORDER BY MemberID = "6" DESC, MemberId="3" DESC, MemberID="5" DESC;
4 голосов
/ 12 июля 2011

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

SELECT * FROM Members
ORDER BY CASE MemberId
    WHEN 6 THEN 1
    WHEN 3 THEN 2
    WHEN 5 THEN 3
    ELSE 999
END
1 голос
/ 12 июля 2011

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

Select * from Members WHERE MemberID = "6" or MemberId="3" or MemberID="5" order by 
MemberID = "6" desc 
MemberId="3" desc
MemberID="5" desc

Просмотрите этот пост один раз

Как сделать так, чтобы результаты запроса MYSQL заказывались в порядке условий?

1 голос
/ 12 июля 2011

Попробуйте выбрать данные, используя 3 UNION ALL запросов:

SELECT * FROM Members WHERE MemberID = "6"
UNION ALL
SELECT * FROM Members WHERE MemberId = "3"
UNION ALL
SELECT * FROM Members WHERE MemberID = "5"

или, может быть, вам нужно просто добавить новый столбец для хранения порядка сортировки?

0 голосов
/ 12 июля 2011

нет.

Вы должны указать предложение ORDER BY, чтобы получить все в любом порядке.

Если вы можете построить некоторую логику, которая определяет порядок, то вы можете включить ее в ORDER BY, иначе вы не сможете.

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

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