Вы можете использовать UNION для объединения записей WHERE id IN (1, 2)
, а затем второй запрос - ваша случайная запись.
SELECT *
FROM table
WHERE id IN (1, 2)
UNION
SELECT Top 1 *
FROM table
Если вы предоставите более подробную информацию о своем запросе, то я могу предоставить более подробный ответ.
Edit:
На основании вашего комментария вы сможете сделать что-то вроде этого:
SELECT *
FROM list_cards
WHERE card_id IN (1, 2) AND qty > 0
UNION
SELECT *
FROM list_cards
WHERE qty > 0
Если вы хотите быть уверенным, вы всегда получите 3 результата:
SELECT TOP 3 C.*
FROM
(
SELECT C.*, '1' as Priority
FROM list_cards C
WHERE C.card_id IN (1, 2) AND qty > 0
UNION
SELECT C.*, '2' as Priority
FROM list_cards C
WHERE qty > 0
) C
ORDER BY C.Priority