Generally, when doing many to many, you're using primary keys, which are unique, as the join keys.
If you're using a repeating row, then in MySQL you're probably better off using temp tables than sub selects, at least in 4.x and before, as mysql is still pretty pokey at doing complex things with subselects.
I imagine you use a subselect to do some kind of (select distinct field from table) thing? in that case, just select those into a temp table and use that to join to the other tables.
It's a pain, but that's the MySQL way of doing things, at least until the query planner grows a bigger brain . 5.0 may be better at planning sub queries.
Myself, I use MySQL for simple data sets and content management, and postgresql for complex data mining.