the following query gets me the correct results however, The data stored makes the order by clause give me the output incorrectly.

the values to be returned are like this, for example.

10 The square
9 The square
7 The Square
My Business

I want to display it in numerical value and alphabetical order like this

7 The Square
9 The Square
10 The Square
My Business

So, numeric first and alphabetical afterwards.

Trouble is, 10 is seen as an earlier number than 7.

What should I be looking at when making the numerical item output erm, in numeric order - 7, 8, 9, 10?

here's the query so far

Code MySQL:
select id as sub_business_id
 , business as sub_business_name
 , parent_id as parent_id
 from businesses as b
 where (
         ( b.id = 123)
         ( b.parent_id = 123 )
    order by sub_business_name