id parent_id
1 0
2 0
3 2
4 0
5 1
6 0
I need a query that will return parent rows (parent_id=0) f
Here is an example solution using a union with an order by clause (It wont work for deep nesting though).
SELECT p.id,
p.parent_id,
p.name,
p.id AS sequence
FROM topics AS p
WHERE p.parent_id = 0
UNION
SELECT t.id,
t.parent_id,
t.name,
t.parent_id AS sequence
FROM topics AS t
WHERE t.parent_id <> 0
ORDER BY sequence, parent_id, name