SQL問題(22/08/04)
問題リンク
自分の書いたコード
SELECT name FROM Customers INNER JOIN Orders ON Customers.id = Orders.customerId
この問題から学んだこと
LeetCodeのSQL問題ではheaders情報にはテーブル名が出力されるようにする
たいていは AS句 を使用してテーブル名を出力させればok(?)
NULLを使用して条件を絞り込める
JOINとLEFT JOINの違いをきちんと理解する - 箱のプログラミング日記。
上記が参考になりました。
- JOINの場合、合致する右表のレコードがない場合は対応する左表のレコードが削除される(結果に出力されない)
- LEFT JOINの場合、合致する右表のレコードがない場合でも対応する左表のレコードが残る(結合条件のカラムはNULLの状態で出力される)
今回の問題は以下を理解すれば解けることになります。
- LEFT JOIN, ON, WHERE, IS NULL を使用する
- 右表(Orders)のデータがNULLであることを利用する
NOT INを使用して簡潔にも書ける
そのまま文言を転用させていただきます。
一言でその機能を説明するなら「指定した要素を含んでいないレコード(行)を取得する」と言ったところでしょうか。
【SQL】NOT INの使い方!基本からよくある問題まで! | 侍エンジニアブログ
以上