Коррелированные подзапросы, как правило, плохая идея, поскольку во многих случаях они приводят к одному запросу на строку, который не масштабируется.Если я правильно читаю ваш запрос, вы можете просто присоединиться к d
дважды с разными условиями соединения, чтобы получить x
и y
.
select
a.*,
b.*,
d1.x as x,
d2.x as y
from
a
join
b on a.id = b.id
join
d as d1 on d.id = b.id
join
d as d2 on d.id <> b.id