Хм, а зачем вы такие хитрые-то?
Если список всех компаний заранее известен и не слишком велик, то можно без проблем использовать ORDER BY FIELD:
Код:
SELECT * FROM tablename ORDER BY FIELD(company, 'company3', 'company1', ....)
Если список неизвестен или слишком велик, то делать ORDER BY FIND_IN_SET:
Код:
SELECT * FROM tablename ORDER BY FIND_IN_SET(company, 'company1,company3') DESC