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.