Это должно сделать это ... за исключением двойного тире "-" префикс к имени ...
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
Порядок в первом случае / когда все элементы, которые являются верхним уровнем, или на вторичном уровне по идентификатору первичного уровня. Поэтому попытка использовать предложенный родительский взлом * 1000 не будет проблемой, если у вас более 1000 записей. Второй случай / когда будет принудительно установлен, когда родительский идентификатор = 0 в ТОП своего сгруппированного списка и всех его вспомогательных записей ПОД, но перед следующим родительским идентификатором.
однако, если вы действительно хотите двойную черту, измените на
SELECT
if( t1.ParentID = 0, '', '--' ) + t1.name name,
<rest of query is the same>