我有一个数据库
id | parentid | name 1 | 0 | CatOne 2 | 0 | CatTwo 3 | 0 | CatThree 4 | 1 | SubCatOne 5 | 1 | SubCatOne2 6 | 3 | SubCatThree
我怎样才能选择该猫排序id,parentid?那是
id
parentid
CatOne 1 --SubCatOne 4 --SubCatOne2 5 CatTwo 2 CatThree 3 --SubCatThree 6
这应该做…除了名称的双破折号“-”以外…
SELECT t1.name, t1.id FROM Table1 t1 ORDER BY case when t1.parentID = 0 then t1.ID else t1.ParentID end, case when t1.parentID = 0 then '1' else '2' end, t1.id
按第一个案例的顺序/何时将所有属于最高级别的项目放在第一层,或者将所有项目放在第一层的ID的第二层。因此,如果您有超过1000个条目,尝试使用提供的父* 1000个示例hack就不会成为问题。当父ID = 0时,第二个案例/时间将强制进入其分组列表的TOP及其下的所有子条目,但在下一个父ID之前。
但是,如果您确实想要双破折号,请更改为
SELECT if( t1.ParentID = 0, '', '--' ) + t1.name name, <rest of query is the same>