Ответ на ваш первоначальный вопрос: Нет, удалите подзапрос и поместите условие в ON
-класс:
SELECT *
FROM ext1
LEFT JOIN int2 ON ( int2.id = ext1.some_id )
Одним из решений может быть использование переменных длянайдите первую (или вторую) строку, но это решение не будет эффективно работать с индексами, поэтому у вас могут возникнуть проблемы с производительностью.
SELECT ext1.some_id, int2x.order_col, int2x.something_else
FROM ext1
LEFT JOIN (SELECT `int2`.*, @i:=IF(@id=(@id:=id), @i+1, 0) As rank
FROM `int2`,
( SELECT @i:=0, @id:=-1 ) v
ORDER BY id, order_col ) AS int2x ON ( int2x.id = ext1.some_id
AND int2x.rank = 0 )
;
Это предполагает, что у вас есть столбец, который вы хотите упорядочить по(order_col
) и Left Присоединяется к первому ряду за some_id
.