Нет, все в порядке.
Вы можете написать запрос выше, используя IN, EXISTS во всех RDBMS, некоторые также поддерживают INTERSECT.
Семантически это полусоединение, которое "дает мне строки из таблицы A, где у меня есть хотя бы одно совпадение в таблице B". ВНУТРЕННЕЕ СОЕДИНЕНИЕ "дай мне все подходящие строки"
Итак, если в TableA 3 строки, а в TableB 5 совпадающих строк:
- ВНУТРЕННЕЕ СОЕДИНЕНИЕ - 15 строк
- полусоединение состоит из 3 строк
Вот почему IN и EXISTS выдвигаются мной и другими типами SQL здесь: JOIN неверен, требует DISTINCT и будет медленнее.
EXISTS поддерживает соединения с несколькими столбцами, IN в SQL Server отсутствует (в других).