ok ... ho capito

lui con quel where estrae TUTTE le righe che hanno la lingua di default e la lingua richiesta

e su questo non puoi fare nulla perché dovresti verificare i dati estratti

ti consieglio di lasciare cosi la query e di fare il lavoro tramite php

infatti quando selezioni il testo ti basta che ti cicli tutto e ti crei un'array basandoti sulla chiave unica che è REF

while($row = mysql_fecth_assoc($query))
{
if (!isset($lista[$row['ref']]))
{
// imposti la riga
}
else
{
// ti limiti a verificare se la lingua presente in questa riga è quella richiesta (se lo è vuol dire che la riga che hai inserito è con la lingua di default) e quindi ti limiti ad impostare la lingua richiesta
}
}

e poi ti ricicli l'array lista e stampi tutto quello che vuoi

altrimenti puoi fare anche un'altra cosa più carina

se imposti un'order by con i settaggi che ti servono ed alla fine metti il valore di lang ordinato in maniera discedente (mettendo che la lingua di default è una) puoi stampare tutto mentre cicli!

In questo modo ti fai un'array dove vai ad inserire i vari ref e se già è stata inserita una riga salti il ciclo corrente altrimenti stampi a video con la lingua presente e aggiungi a quest'array il valore che ti serve

PS: sono tutte ipotesi ovviamente però spero ti siano in qualche modo utili