2016-11-07 4 views
0

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

 
id  content parent_id 
265 flower NULL  
266 shroom NULL  
267 ccccccc NULL  
268 ddddddd NULL  
275 b1  266 
276 b2  266 
277 sub text 275 

и я хочу этот вывод:

 
id  content parent_id 
265 flower NULL  
266 shroom NULL 
275 b1  266 
277 sub text 275 
276 b2  266  
267 ccccccc NULL  
268 ddddddd NULL  

В словах: Сортировка его утратившим если он получил parent_id я хочу поставьте его под ним в порядке DESC.

Я пытался что-то вроде:

SELECT * 
FROM notes 
ORDER BY if (parent_id is not null, parent_id, id) id 

sqlfiddle: http://www.sqlfiddle.com/#!2/0418a7/1/0

+1

Ваш ожидаемый результат, по-видимому, упорядочен по содержимому, а не по parent_id. – NavkarJ

+0

Сортировать по содержанию ... или по заказу от parent_id по возрастанию – scaisEdge

+0

Я не хочу заказывать его по содержанию. –

ответ

-1

Я не проверял это. Попробуйте что-нибудь в этом направлении.

select id, content, parent_id 
    from notes 
order by coalesce(parent_id, id); 

Это все равно создаст ситуацию, когда ребенок приходит перед родителем (редко, но возможно).

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