Это можно сделать одним оператором:
SELECT b.*
FROM TABLE_B b
JOIN TABLE_A a ON a.id2 = b.id2
WHERE a.id1 = @ID1
Но это означает, что будут дубликаты, если более одной записи в TABLE_A относится к записи TABLE_B. В этой ситуации используйте EXISTS вместо добавления DISTINCT к предыдущему запросу:
SELECT b.*
FROM TABLE_B b
WHERE EXISTS(SELECT NULL
FROM TABLE_A a
WHERE a.id2 = b.id2
AND a.id1 = @ID1)
Предложение IN эквивалентно, но EXISTS будет быстрее, если есть дубликаты:
SELECT b.*
FROM TABLE_B b
WHERE b.id2 IN (SELECT a.id2
FROM TABLE_A a
WHERE a.id1 = @ID1)