質問: ### 前提・実現したいこと * ユーザテーブルusersと大会参加者テーブルtaikaiAがあります。それぞれ、cidと呼ぶユーザ固有のIDが含まれています。 ![イメージ説明](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/5e0c7c8526ac6f711359d85a16a05aa5.png) * SQLを使って大会Aに参加していない会員を一覧にしたいのです。以下が期待している結果です。 ![イメージ説明](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/3a7dbb405dd147a4d8c07ac8da4fce62.png) * 全ユーザリスト ー 大会A参加者=参加していない会員 を実現したいのですが、ちょっと思いつきません。SQLの超基本のような気もします。ご教示いただけると幸いです。 ### 補足情報(FW/ツールのバージョンなど) * Amazon Athenaを使っています。
回答: > > 全ユーザリスト ー 大会A参加者=参加していない会員 を実現したいのですが、ちょっと思いつきません。SQLの超基本のような気もします。 > > > 求めるものは**差集合**というもので**基本**です。 SQLの集合演算整理 覚えておくものとしては、外部結合(outer join)が一番使い勝手が良いと思います。 ``` select users.cid from users left join taikaiA on users.cid=taikaiA.cid where aikaiA.cid is null ```