Если вы имеете в виду Я хочу получить все строки, если подзапрос не возвращает строк использовать трехэтапный подход
1 Проверить подзапрос
select count(*) FROM B WHERE STATUS=1
Если вы получите результат> 0, выполните шаг 2, в противном случае с тремя
2 получите результат подзапроса
-- your original query
SELECT * FROM A
WHERE ID IN(
SELECT ID FROM B WHERE STATUS=1
)
3 Получить все данные
SELECT * FROM A
Альтернативный подход к одному запросу
Используя OR
, вы пишете запрос так, как говорите: если запрос не возвращает noстроки получают все данные.
SELECT * FROM A
WHERE ID IN(
SELECT ID FROM B WHERE STATUS=1
)
OR (SELECT count(*) FROM B WHERE STATUS=1) = 0