SELECT field1
FROM mytable
WHERE id = $id
ORDER BY CASE WHEN criteria = $criteria THEN 0 ELSE 1 END CASE
LIMIT 5;
В этом списке будут перечислены строки, соответствующие критериям до тех, которые не соответствуют нулю, потому что ноль предшествует единице.
Если это не сработает напрямую - как написано - поместите информацию в подзапрос:
SELECT field1
FROM (SELECT field1,
CASE WHEN criteria = $criteria THEN 0 ELSE 1 END CASE AS ordering
FROM mytable
WHERE id = $id
) AS subqry
ORDER BY ordering
LIMIT 5;
Часто для определения порядка строк в пределах порядка 0 против 1 будут использоваться другие вторичные критерии.