Mysql
 sql >> Base de données >  >> RDS >> Mysql

requête mysql PHP :je veux qu'un élément spécifique soit le premier, puis trier le reste des éléments

Vous pouvez commander par l'un des suivants

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' produit 1 pour True et 0 pour False , donc pourquoi desc

De plus, puisque vous ne vous souciez pas de l'ordre du reste des lignes à l'exception des quatre premières, vous pouvez tout aussi bien conserver le reste des lignes Jan dans la continuité.

Essayez ceci :

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;

Fonctionne uniquement si Jan a 4 lignes ou plus.

SQLFiddle