Mysql
 sql >> база данни >  >> RDS >> Mysql

Подреждане на MySQL по полета и родители

По-добре трябва да запазите parent_id но не и името на родителя.

Ето бързо решение за поръчка на вашата маса http://sqlfiddle.com/#!9/2a1fb /3

SELECT *
FROM table1
ORDER BY 
   CASE WHEN parent_id IS NULL THEN CAST(ID AS CHAR)
   ELSE CONCAT(CAST(parent_id AS CHAR),'-', CAST(ID AS CHAR)) END

РЕДАКТИРАНЕ 1 Вариант #2 :-) http://sqlfiddle.com/#!9/76dcb/23

SELECT t1.* 
FROM table1 t1
LEFT JOIN table1 t2
ON t2.ID = t1.parent_id
ORDER BY 
   CASE WHEN t2.ord_idx IS NULL THEN CAST(t1.ord_idx AS CHAR)
   ELSE CONCAT(CAST(t2.ord_idx AS CHAR),'-',CAST(t1.ord_idx AS CHAR)) END

РЕДАКТИРАНЕ 2 за да видите как работи тази поръчка, можете просто да добавите това поле, за да изберете част като:

SELECT t1.*, CASE WHEN t2.ord_idx IS NULL THEN CAST(t1.ord_idx AS CHAR)
   ELSE CONCAT(CAST(t2.ord_idx AS CHAR),'-',CAST(t1.ord_idx AS CHAR)) END as my_order 
FROM table1 t1
LEFT JOIN table1 t2
ON t2.ID = t1.parent_id
ORDER BY 
   CASE WHEN t2.ord_idx IS NULL THEN CAST(t1.ord_idx AS CHAR)
   ELSE CONCAT(CAST(t2.ord_idx AS CHAR),'-',CAST(t1.ord_idx AS CHAR)) END


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL Много-към-много Изберете

  2. не може да намери символ PreparedStatement след надграждане на JAR

  3. Entity Framework - MySQL - Проблем с формат за дата и час

  4. Сортиране на MySQL заявка с ORDER BY или с PHP функции за сортиране

  5. как да форматирам полето за дата в MYSQL