sql >> Database teknologi >  >> RDS >> Mysql

mysql-forespørgsel PHP:Jeg ønsker at et specifikt emne skal være først og derefter sortere resten af ​​emnerne

Du kan bestille efter en af ​​følgende

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' producerer 1 for True og 0 for False , derfor hvorfor desc

Da du er ligeglad med rækkefølgen af ​​resten af ​​rækkerne undtagen de første fire, kan du lige så godt beholde resten af ​​Jan-rækkerne i fortsættelse.

Prøv dette:

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;

Virker kun hvis Jan har 4 eller flere rækker.

SQLFiddle



  1. forespørgsel for at fjerne alle tegn efter sidste komma i strengen

  2. MySQL:Find rækker, der ikke deltager i et forhold

  3. Import af .csv-fil til en Oracle Forms-applikation

  4. Sådan får du gårsdagens date i Oracle