Below is a preview of what I have so far:

MySQL Table:

What I want to do is be able to sort this in a certain way. I would like for all rows that are “FREE” to be at the very top, so where special_price is equal to 0.00.
I also would like all rows with a special to be after that, and then all rows with just a normal price would be after that. Is there any way to do that without specifying a sort_id so the user wouldn’t have to change the order themselves?
So in the above example, the last field “Testing” would be moved up one, and “Replace Air Filter” would be last.
Right now in my query there is no ORDER BY, so it is ordering by the id.
Any help is appreciated. Thanks!
should do the trick.
Explaination
COALESCEis a function that takes the first non-null value, so anywhere you have a null special price, it will default to99999(just some arbitrary high number to get it at the end of the ordering). From there we order on price, so any ties, as well as the end of the list, will be in ascending order by price.