Самое простое решение - сделать это в двух запросах:
SELECT ... FROM YourTable WHERE SomeColumn IN (10,4)
Если и только если вышеуказанный запрос не даст результатов, запустите второй запрос:
SELECT ... FROM YourTable WHERE SomeColumn = 3
Выполнение двух запросов может показаться «не элегантным», но имеет свои преимущества:
- Легко кодировать
- Легко отлаживать
- Часто имеет лучшую производительность, чем очень сложное решение
- Это легко понять программисту, который должен поддерживать код после вас.
Запуск двух запросов может показаться дополнительным, но также учтите, что второй запрос не будет выполняться каждый раз - только если первый запрос имеет пустой результат. Если вы используете дорогое решение с одним запросом, помните, что оно будет стоить каждый раз .