sql >> Base de Datos >  >> RDS >> Mysql

mysql query PHP:quiero que un elemento específico sea el primero y luego ordenar el resto de los elementos

Puede ordenar por cualquiera de los siguientes

order by owner <> 'Jan'
order by owner = 'Jan' desc
order by case when owner = 'Jan' then 0 else 1 end
order by if(owner = 'Jan',0,1)

owner = 'Jan' produce 1 para True y 0 para False , por eso desc

Además, dado que no te importa el orden del resto de las filas excepto las primeras cuatro, también podrías mantener el resto de las filas de enero en continuación.

Prueba esto:

SELECT 
    id, car_name, owner
FROM
    ((SELECT 
        0 x, t.*
    FROM
        your_table t
    ORDER BY owner <> 'Jan' , id
    LIMIT 4) UNION ALL (SELECT 
        *
    FROM
        (SELECT 
        1 x, t.*
    FROM
        your_table t
    ORDER BY owner <> 'Jan' , id
    LIMIT 4 , 1000) t
    ORDER BY id)) t
ORDER BY x , id;

Funciona solo si Jan tiene 4 o más filas.

SQLFiddle