Mysql
 sql >> Datenbank >  >> RDS >> Mysql

mysql query PHP:Ich möchte, dass ein bestimmtes Element zuerst angezeigt wird und dann die restlichen Elemente sortiert werden

Sie können über einen der folgenden Wege bestellen

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' erzeugt 1 für True und 0 für False , also warum desc

Da Ihnen die Reihenfolge der restlichen Zeilen außer den ersten vier egal ist, können Sie auch die restlichen Jan-Zeilen fortlaufend beibehalten.

Versuchen Sie Folgendes:

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;

Funktioniert nur, wenn Jan 4 oder mehr Zeilen hat.

SQLFiddle