Ладно, раз уж такая непонятка, разжую маленько свой ответ.
> Нужны все поля из table1
Все поля table1 можно получить в любом запросе.
> и определенные поля из table2
Второй запрос отпадает, т.к. там подзапрос может вернуть только одно поле, а требуется "поля".
Вариант множества подзапросов не рассматривается, т.к. ТС его не привёл в списке.
>
Далее, inner join (3-й) возвращает только записи, которые есть в обоих таблицах. В принципе можно предположить, что ТС нужны именно такие записи, но это частный случай и в задаче не оговорено. А если учесть в списке второй запрос, который устраивает ТС (ибо написано "Могу сделать 3мя способами"), то 3-й однозначно отпадает.
Поэтому нужно использовать запрос с left join (1-й), который вернёт все записи из table1 и любой набор полей.
Ещё что-то не понятно по поводу "почему"?
По скорости...
В общем случае, JOIN выполняется быстрее, чем подзапрос. Но не всегда. В редких случаях подзапрос может выполняться быстрее за счёт внутренней оптимизации и буферизации.
Обычно я рекомендую использовать классический JOIN (LEFT/INNER по необходимости). И только потом, если скорость запроса не устраивает, играться с разными вариантами подзапросов. (где-то уже обсуждали скоростя - поищи, или на этом форуме или на php.ru)
_____________
Рекламка / ad.pesow.com Хрень / mr-1.ru