日々精進

新しく学んだことを書き留めていきます

Mysql - サブクエリ内での外部結合

サブクエリ内で親クエリのテーブルとの外部結合をする方法について。
具体的には↓みたいな感じ。(このコードはエラーになる)

select * 
from videos parent_video
where exists
(
  select *
  from parent_video left join people on video.people_id = people.id
)

サブクエリ内でparent_videoと外部結合したいんだけど、このコードのままだと「parent_videoなんてテーブルはないですよ」と言われてしまう。
かといって、videosと書くとparent_videoとは別のテーブルだと認識されてしまうし。。
とりあえず↓のようにサブクエリ内で別のテーブルを宣言して親クエリのテーブルと等価結合する方法で解決した。

select * 
from videos parent_video
where exists
(
  select *
  from videos child_video left join people on video.people_id = people.id
  where parent_video.id = child_video.id
)

可読性やパフォーマンスが心配だなあ。もっと素直な方法ないかな。。