文字列定数の前後の二重引用符は不審なものですが、動作するはずです。おそらく次のようにクエリは修正されませんが、すべての列名を修飾してエイリアスを使用する必要があります。そして、それが明示的join
ではなくin
利用するほうが良いことが多い - だけでなく、MySQLのより新しいバージョンでは、このパフォーマンスの問題を修正しましたが、あなたは試すことができます:
select c.name, c.room
from class c left join
(select e.cname
from enrolled e
group by e.cname
having count(*) >= 5
) ec
on c.name = ec.cname
where c.room = 'R128' or ec.cname is not null
とパフォーマンスのために、あなたは、インデックスをお勧めしますclass(name, room)
とenrolled(cname)
には、次のようなクエリを書くことができます。
select c.name, c.room
from class c
where c.room = 'R128' or
(select count(*) from enrolled e where e.cname = c.name) >= 5
これはクイズです。 _Oh Lord私はrevise_ – RiggsFolly
を実行しました。 '> = 5;' – RiggsFolly