Подтвердить что ты не робот

Закажите результаты, чтобы они соответствовали порядку значений в выражении WHERE IN

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

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

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

4b9b3361

Ответ 1

Select * from Members
WHERE MemberID = "6" or MemberId="3" or MemberID="5"
ORDER BY MemberID = "6" DESC, MemberId="3" DESC, MemberID="5" DESC;

Ответ 2

SELECT 
  * 
FROM 
  Members 
WHERE 
  MemberID IN ("6","3","5")
ORDER BY 
  FIELD(MemberID,"6","3","5");

Ответ 3

Попробуйте следующее:

SELECT * FROM Members
ORDER BY CASE MemberId
    WHEN 6 THEN 1
    WHEN 3 THEN 2
    WHEN 5 THEN 3
    ELSE 999
END

Ответ 4

Попробуйте выбрать данные с помощью 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"

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

Ответ 6

нет.

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

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

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