sql >> データベース >  >> RDS >> Mysql

SQLで二重ネストされたNOTEXISTSステートメントが避けられないのはなぜですか

    あなたの質問は、「1つの特定の都市のすべてのプロジェクトに出荷された/出荷されたすべてのコンポーネントを見つける」です。これを「特定の都市にコンポーネントがないプロジェクトがないすべてのコンポーネントを検索する」と言い換えています。

    私はこれに直接答えたいと思います:

    select scp.component
    from scp join
         projects p
         on scp.pnr = p.pnr
    where p.city = 'Foobar Town'
    group scp.component
    having count(distinct scp.pnr) = (select count(distinct pnr)
                                      from projects
                                      where city = 'Foobar Town'
                                     );
    

    これにより、市内の個別のプロジェクトの数がカウントされ、市内のプロジェクトの数と比較されます(distinct サブクエリではおそらくidは必要ありません。

    まず、これがもっと簡単かどうかはわかりません。第二に、私はNOT EXISTSを認めた最初の人です メソッドmay NOT EXISTSのネストはより効率的ですが、 サブクエリでは、パフォーマンスに悪影響を与える可能性があります。ただし、これはわかりやすいと思います。




    1. MySQLのspoolコマンドに相当するものは何ですか?

    2. PHPクエリが実行されていませんか?

    3. Python From Scratch:動的なWebサイトを作成する

    4. ストアドプロシージャの影響を受けるレコードの数を取得するにはどうすればよいですか?