Le résultat attendu est assez étrange car la premiere est bien un différent de 999 mais après que des 999 et le heart disparu ....
tout dépend des données contenues dans tes tables.A priori toutes les annonces coup de coeur ont toutes été postées par l'utilisateur 999 ce qui expliquerait la disparition de ces annonces.
L'exemple suivant affichera en priorité tous les fruits dont le heart est 1 suivis de tous les fruits du user 999
CREATE TABLE fruit
(
id int auto_increment NOT NULL,
nom varchar(255) NOT NULL,
heart boolean DEFAULT 0,
user int(8),
PRIMARY KEY (id)
);
INSERT fruit VALUES(null,'abricot', 1, 800),
(null,'fraise', 1, 800),
(null,'pomme', 1, 801),
(null,'kiwi', 0, 999),
(null,'pêche', 0, 999),
(null,'orange', 0, 800),
(null,'poire', 1, 8001),
(null,'cerise', 1, 8001);
mysql> select * from fruit order by case
when heart = 1 then 3
when user = 999 then 2 end desc;
+----+---------+-------+------+
| id | nom | heart | user |
+----+---------+-------+------+
| 1 | abricot | 1 | 800 |
| 2 | fraise | 1 | 800 |
| 3 | pomme | 1 | 801 |
| 7 | poire | 1 | 8001 |
| 8 | cerise | 1 | 8001 |
| 4 | kiwi | 0 | 999 |
| 5 | pêche | 0 | 999 |
| 6 | orange | 0 | 800 |
+----+---------+-------+------+