sql >> Databasteknik >  >> RDS >> Mysql

mysql-fråga PHP:Jag vill att ett specifikt objekt ska vara först och sedan sortera resten av objekten

Du kan beställa med något av följande

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' producerar 1 för True och 0 för False , därav varför desc

Dessutom, eftersom du inte bryr dig om ordningen på resten av raderna förutom de första fyra, kan du lika gärna behålla resten av Jan-raderna i fortsättningen.

Prova detta:

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;

Fungerar bara om Jan har 4 eller fler rader.

SQLFiddle



  1. Databaskryptering:Varför och var du behöver ha datakryptering

  2. Vilka är omkostnaderna för att använda AUTOINCREMENT för SQLite på Android?

  3. Hur skapar man ett unikt index på en NULL-kolumn?

  4. Lägg till prefix för automatisk ökning i mysql db