toshizou-Rails

SQL問題(22/08/04)


問題リンク

Loading...

自分の書いたコード

SELECT name FROM Customers
INNER JOIN Orders
ON Customers.id = Orders.customerId

答え(Discussから引用)



この問題から学んだこと

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の使い方!基本からよくある問題まで! | 侍エンジニアブログ



以上