MySQL manca caratteristiche per lo consentano, in un colpo solo
Esempi: DENSE_RANK
funzione finestra, o TOP..WITH TIES
Quindi, senza utilizzare una tabella temporanea o istruzioni IF (che richiedono comunque una procedura memorizzata in MySQL), quindi filtrare ciò sul client al valore di priorità più basso. Cioè, consumano le righe fino a quando il valore cambia
SELECT *, 1 AS priority FROM products WHERE language = 1
UNION ALL
SELECT *, 2 AS priority FROM products WHERE language = 2 AND country = 1
UNION ALL
SELECT *, 3 AS priority FROM products WHERE language = 2 AND country = 2
ORDER BY priority;
Questo non rimuovere andata e ritorno al server MySQL, anche se non è l'ideale. Ed evita anche di rivalutare i SELECT precedenti nelle clausole EXISTS
Quali colonne sono '' *? – Kermit
Sfortunatamente questa non è una query in MySQL: cosa ti aspetti di ottenere da questo – gbn
Penso che tu possa ottenere il risultato "logico" desiderato con ORDER – lvil