respecto a lo del order by, según yo no se puede en mysql, yo tuve un problema similar y lo resolví usando hashes, haciendo algo así:
Código PHP:
$ordenId=array(2,10,...);
$sql="SELECT * FROM Tabla WHERE id=2 AND id=10 AND ...";
$r = mysql_query($sql) or die('La consulta falló: ' . mysql_error(). "en $sql");
while($l = mysql_fetch_array($rext, MYSQL_ASSOC))
{
$id=$l["idTabla"];
$dato1[$id]=$l["dato1"];
$dato2[$id]=$l["dato2"];
...
}
// despues usas los datos en el orden que quieras usando los hash
foreach($ordenId as $k)
{
usardatos($dato1[$k],$dato2[$k],...);
}
Espero te ayude esto