Почему вы сравниваете строки?
SELECT * FROM `apartments`
WHERE `building_num`='1' AND `price` < 800000
ORDER by `apartment_num` ASC
Если это не столбец с символами, а затем это еще одна проблема.
Причина, по которой вы получаете этот результат, заключается в том, что ASCII enconding (который используется при сравнении строки)«11» меньше, чем «2» из-за первого символа.