Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Urutan MySQL Berdasarkan Bidang &Orang Tua

Sebaiknya Anda menyimpan parent_id tapi bukan nama induknya.

Berikut adalah solusi cepat untuk memesan meja Anda 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

EDIT 1 Varian #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

EDIT 2 untuk melihat cara kerja pesanan ini, Anda cukup menambahkan bidang ini untuk memilih bagian seperti:

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. Bagaimana cara memasukkan Data ke Winform TreeView (C #) dalam pengkodean yang efektif?

  2. Mengembalikan nilai 0 dari baris database di PHP/MySQL setelah kueri

  3. Permintaan SQL untuk memeriksa apakah sebuah nama dimulai dan diakhiri dengan vokal

  4. memasukkan data menggunakan Konektor mysql dengan python

  5. skrip nodejs saya tidak keluar dengan sendirinya setelah eksekusi berhasil