sql >> Database teknologi >  >> RDS >> Mysql

MySQL Sorter efter felter og forældre

Du bør hellere beholde parent_id men ikke forældrenavnet.

Her er en hurtig løsning til at bestille dit bord 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

REDIGER 1 Variant #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

REDIGERING 2 for at se, hvordan denne ordre fungerer, kan du blot tilføje dette felt for at vælge en del som:

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. Oracle.DataAccess (ODP.NET) Array Binding Value falder ikke inden for det forventede interval

  2. PDO SQL-tilstand 00000 men stadig fejl?

  3. Kan jeg bruge et Postgres-nøgleord som et alias på udvalgt liste?

  4. Hvordan kan jeg udløse en trigger i slutningen af ​​en kæde af opdateringer?