тогда переработайте вопрос и предоставьте нормальную структуру полей и данных которые в них хранятся, а то из текущих данных вообще сложно что либо понять
SELECT * FROM tbl ORDER BY LEAST(price, COALESCE(new_price, price)) ASC
где LEAST - меньшее из двух значений
COALESCE - замена NULL значения (я так предполагаю, акционная цена не везде) на стандартный price при сортировке по таким значениям