Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Thứ tự MySQL theo Trường &Cha mẹ

Tốt hơn bạn nên giữ parent_id nhưng không phải tên mẹ.

Đây là giải pháp nhanh chóng để đặt bàn của bạn 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

CHỈNH SỬA 1 Biến thể # 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

CHỈNH SỬA 2 để xem đơn đặt hàng này hoạt động như thế nào, bạn chỉ cần thêm trường này để chọn một phần như:

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. dấu ngoặc kép trong Truy vấn SQL

  2. SQL_CALC_FOUND_ROWS / FOUND_ROWS () không hoạt động trong PHP

  3. Điền vào một hộp tổ hợp với dữ liệu mysql

  4. Lỗi Python và mySQLdb:OperationalError:(1054, Cột không xác định trong 'mệnh đề where')

  5. Cách chuyển các câu lệnh điều kiện vào một truy vấn mySql