2010-07-08 1 views
1

Я хотел бы узнать, можно ли заказать набор с разделителями-запятыми, возвращаемый подзапросом?Mysql order по значению столбца с разделителями-запятыми

У меня есть следующие:

SELECT navigation.id, documents.template_id 
FROM navigation 
INNER JOIN documents 
    ON navigation.document_id = documents.id 
    AND FIND_IN_SET(navigation.id,(SELECT numeric_lineage 
            FROM navigation WHERE id = #id#)) 
ORDER BY ??? 

Теперь я не уверен, как я бы идти о заказе результаты в том же порядке, разделенный запятыми набор в numeric_lineage. Является ли это возможным? Я бы предпочел не делать другого подзапроса, если это возможно.

Благодаря

ответ

4

Вы можете использовать FIND_IN_SET в ORDER BY предложения:

ORDER BY FIND_IN_SET(navigation.id, (SELECT numeric_lineage 
             FROM navigation WHERE id = #id#)) 
+1

Awesome, я понятия не имел, что это возможно! Меня просто беспокоит наличие 2 подзапросов. Было бы выгоднее (загрузка сервера) делать отдельный запрос для numeric_lineage, заменяя 2 подзапроса на строку и используя IN вместо первого FIND_IN_SET? Я всегда находился под впечатлениями подзапросов «были дьяволы»? ;-) – Bjorn

+0

@Bjorn: Если подзапросы были настолько плохими, функциональность была бы полностью удалена. С точки зрения обслуживания, это отстой, чтобы иметь идентичные запросы, но MySQL не поддерживает предложение WITH (не уверен, что он будет поддерживать это в любом случае), поэтому я не вижу никакого способа решения этой проблемы. –

+0

Отлично, спасибо вам за помощь. Очень ценим! :-) – Bjorn

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