Решено созданием столбика с весом с помощью CAST, вычитанием значения up - down.
SELECT * ,
IFNULL(CAST(`vr`.`up` AS SIGNED ) - CAST(`vr`.`down` AS SIGNED),0) AS `pos`
FROM `order` AS `of`
LEFT JOIN `rate` AS `vr` ON ( vr.nid = of.order_id )
AND (vr.type = 'order')
WHERE (of.published = 'y')
ORDER BY `pos` DESC , `time` DESC
LIMIT 0, 30