In general, this is true, especially in SQL executed on the server side, such as stored procedures, triggers, etc.
And there, it's better to write like this:
select
A.*
from foo1 A
inner join foo2 B on (A.ID = B.ParentID)
instead of this:
select
A.*
from foo1 A
where A.ID in (select B.ParentID from foo2 B)
Although the result will be identical.
However, in some cases it is simply convenient.
For example, in my application I pass an array of PrimaryKey values to ReportManager so that he can ask the server for the data he has selected on the list.
It works like this:
And where in SQL looks like this:
where TD.IdDevice in (10,12,16,23)
Simply clever :P