Vous voulez générer une valeur juste pour trier en fonction de la condition souhaitée.
ORDER BY fruit_id desc,
a.rev_date desc,
case when fruit_id = primary_fruit_id then 0 else 1 end
Vous n'affichez pas le champ de date dans vos exemples de sorties, donc je ne sais pas comment cette date segmente la sortie. Je suppose que la date est plus pertinente que la "même valeur de clé", mais vous pouvez la placer là où vous donne l'effet souhaité.
ORDER BY fruit_id desc,
case when fruit_id = primary_fruit_id then 0 else 1 end,
a.rev_date desc
ORDER BY case when fruit_id = primary_fruit_id then 0 else 1 end,
fruit_id desc,
a.rev_date desc