He hecho una prueba en mi base de datos y no veo ese comportamiento, siempre me saca el correcto. Ahora, si tu haces mysql_fetch_array() el puntero interno a un registro se corre al siguiente, por tanto, si haces un break, y luego haces msyql_fetch_array() te va a sacar el siguente.
Aunque mejor es buscar asi:
Código PHP:
<?php
$tabla=mysql_db_query("bd","select * from tabla where campo='$algo';");
if ($tabla && mysql_num_rows($tabla)>0)
{
$row=mysql_fetch_array($tabla);
echo $row['campo'];
}
?>