sql >> Database >  >> RDS >> Mysql

mysql-query PHP:ik wil dat specifieke items eerst zijn en vervolgens de rest van de items sorteren

U kunt op een van de volgende manieren 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' produceert 1 voor True en 0 voor False , vandaar waarom desc

En aangezien de volgorde van de rest van de rijen je niet interesseert, behalve de eerste vier, kun je net zo goed de rest van de rijen van Jan als vervolg houden.

Probeer dit:

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;

Werkt alleen als Jan 4 of meer rijen heeft.

SQLFiddle



  1. Welk VERZAMELEN moet ik instellen om alle mogelijke talen te gebruiken?

  2. MySql count() om 0 terug te geven als er geen records gevonden zijn

  3. SQL-query om alle waarden te krijgen die een opsomming kan hebben

  4. AMD EPYC-processors in virtuele Azure-machines