2016-06-22 3 views
0

Возможно, кто-то может сказать мне, как заказать вывод MySQL в данном конкретном случае:MySQL - сортировать результат по конкретной записи

У меня есть таблица вроде этого:

| id | Value1 | Value2 | ...More values that doesn`t matter in this example 
^-----^--------^--------^ 
| 1 | 1 | X | 
| 2 | 2 | X | 
| 3 | 3 | 2 | 
| 4 | 1 | X | 
| 5 | 2 | X | 
| 6 | 3 | 3 | 
| 7 | 1 | X | 
| 8 | 2 | X | 
| 9 | 3 | 1 | 

Я хочу, чтобы получить значения из этого table, и я хочу заказать их по Value2, но только там, где Value1 равно 3 (значения X не имеют значения).

Какой лучший способ сделать это с хорошей производительностью?

Заранее благодарен!

+1

И что вы хотите, чтобы произошло, когда 'value1' не равна 3? –

+0

Я не был достаточно точным: скажем, что я хочу получить только ключ id, но из всей таблицы и заказать эти ключи, которые имеют Value1 = 3 по Value2. Таким образом, мой желаемый результат был бы следующим: (9, 3, 6, 1, 2, 4, 5, 7, 8), и я забочусь только о порядке (9, 3, 6) - мне нужно все остальное, но в любом порядке. – Zorann

ответ

1

Хммм, вы хотите where и order by?

select t.* 
from t 
where value1 = 3 
order by value2; 

EDIT:

на основе комментария:

select t.* 
from t 
order by (value1 = 3) desc, -- put value 3 first 
     value2 
0
SELECT * FROM TABLE WHERE Value1=3 ORDER BY Value2 
+1

Простой и хороший, но мне нужно выбрать все строки, а не только те, у которых есть Value1 = 3 – Zorann

0

Try с этим, пожалуйста:

SELECT * FROM TABLE WHERE Value1=3 ORDER BY Value2 UNION SELECT * FROM TABLE WHERE Value1!=3 
Смежные вопросы