2013-12-10 5 views
2

у меня есть этот запрос,Заказ более чем на одно поле?

SELECT * FROM 
(SELECT u.id,u.email,u.verified,u.verified_on,u.created_on,ca.html AS age,cg.html AS gender,cs.html AS state 
FROM users u 
LEFT JOIN combo ca ON ca.combo_group='age' AND ca.value =u.age 
LEFT JOIN combo cg ON cg.combo_group='gender' AND cg.value =u.gender 
LEFT JOIN combo cs ON cs.combo_group='state' AND cs.value =u.state ORDER BY created_on DESC) users ORDER BY email ASC; 

Я использую суб запрос, потому что я хочу сортировать created_on DESC ASC и электронного

это влияет на производительность, если я использовать вспомогательный запрос.

+0

Не только влияет на производительность: это также не даст ожидаемого результата. –

+0

Почему это даст неожиданный результат? –

+1

Потому что он будет отсортирован по электронной почте, полностью игнорируя заказ created_on. –

ответ

5

Почему бы вам не сделать заказ?

SELECT 
    u.id 
    ,u.email 
    ,u.verified 
    ,u.verified_on 
    ,u.created_on 
    ,ca.html AS age 
    ,cg.html AS gender 
    ,cs.html AS state 
FROM users u 
    LEFT JOIN combo ca ON ca.combo_group='age' AND ca.value =u.age 
    LEFT JOIN combo cg ON cg.combo_group='gender' AND cg.value =u.gender 
    LEFT JOIN combo cs ON cs.combo_group='state' AND cs.value =u.state 
ORDER BY created_on DESC, email ASC 
+0

О, это возможно? я не знал –

+0

Да, вы можете заказать несколько полей – Sal00m

+0

... и выражениями, а часто и результатами подзапроса. –

Смежные вопросы