SQL Results have no "defined order" as long as you dont' put an "order by" clause in the select, which will not help in your case if I understand it correctly.
An "unsure" workaround may be the following
select * from table where a=3
union all
select * from table where a=2
union all
select * from table where a=4.
(depens on the RDBMS+Version which order your get).
The real good (?) solution would be:
create table "table2" (ordering int, searcharg int)
insert into table2 values (1, 3)
insert into table2 values (2, 2)
insert into table2 values (3, 4)
select table.* from table , table2
where table.a = table2.searcharg
and table.a in (3,2,4)
order by table2.ordering
(I've put als the "or"-predicates in an "in" -predicate, which normally performs better).