LeetCode の SQL 実装 (183. 注文をしたことがない顧客)

LeetCode の SQL 実装 (183. 注文をしたことがない顧客)

[LeetCode] 183.注文しない顧客

Web サイトに、Customers テーブルと Orders テーブルという 2 つのテーブルが含まれているとします。何も注文したことのないすべての顧客を検索する SQL クエリを記述します。

表: 顧客。

+----+-------+
| ID | 名前 |
+----+-------+
| 1 | ジョー |
| 2 | ヘンリー |
| 3 | サム |
| 4 | 最大 |
+----+-------+

表: 注文。

+----+-------------+
| ID | 顧客 ID |
+----+-------------+
| 1 | 3 |
| 2 | 1 |
+----+-------------+

上記の表を例として、以下を返します。

+-----------+
| 顧客 |
+-----------+
| ヘンリー |
| マックス |
+-----------+

この質問では、Customers テーブルと Orders テーブルが提供されます。注文したことのない顧客を見つけましょう。最も直接的な方法は、次に示すように、Not in キーワードを使用して、Orders テーブルに表示されない顧客 ID を見つけることです。

解決策1:

顧客から顧客として名前を選択 
WHERE Id NOT IN (SELECT CustomerId FROM Orders);

または、左結合を使用して 2 つのテーブルを結合することもできます。右側の CustomerId が Null である顧客 (つまり注文を行っていない顧客) を見つける必要があります。

解決策2:

顧客から顧客として名前を選択
LEFT JOIN Orders ON Customers.Id = Orders.CustomerId
Orders.CustomerId が NULL の場合;

Not in と同様に機能する Not exists キーワードを使用することもできます。次のコードを参照してください。

解決策3:

顧客から顧客として名前を選択 c
存在しない場合 (SELECT * FROM Orders o WHERE o.CustomerId = c.Id);

参考文献:

https://leetcode.com/discuss/22624/three-accepted-solutions

https://leetcode.com/discuss/53213/a-solution-using-not-in-and-another-one-using-left-join

これで、LeetCode の SQL 実装に関する記事は終了です (182. 注文したことがないお客様)。注文したことがないお客様の SQL 実装に関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • LeetCode の SQL 実装 (196. 重複するメールボックスを削除する)
  • SQL 実装 LeetCode (185. 部門内で最も給与の高い上位 3 名)
  • LeetCode の SQL 実装 (184. 部門内で最も高い給与)
  • LeetCode の SQL 実装 (182. 重複するメールボックス)
  • LeetCode の SQL 実装 (181. 従業員は管理職よりも収入が高い)
  • SQLはLeetCodeを実装します(180.連続した数字)
  • LeetCode の C++ 実装 (組み合わせの最大数は 179)
  • LeetCode の SQL 実装 (197. 気温上昇)

<<:  ウェブページのカラーマッチングにおけるオーバーラップとソフトカラーマッチングの手法を詳しく説明

>>:  HTMLポップアップ透明レイヤーインスタンスのサイズを設定でき、比例することができます

推薦する

HTMLボタンを中央に配置する方法

HTML ボタン自体を中央に配置するにはどうすればよいでしょうか? このアイデアは簡単に見つかります...

シンプルなカルーセル効果を実現するネイティブ js

この記事では、シンプルなカルーセル効果を実現するためのjsの具体的なコードを参考までに紹介します。具...

MySQL マスタースレーブレプリケーション 読み書き分離の設定方法の詳細説明

1. 説明前回は、MySQL のインストールと構成、MySQL ステートメントの使用、MySQL デ...

MySQL 8.0.11 のインストールと設定方法のグラフィックチュートリアル MySQL 8.0 の新しいパスワード認証方法

この記事では、参考までにMySQL8.0.11のインストールと設定方法、およびMySQL8.0の新し...

JavaScript はクリックして画像の形状を変更する (変換アプリケーション) を実装します。

JavaScriptをクリックすると画像の形状が変わります(変形の応用)。参考までに具体的な内容は...

VirtualBox CentOS7.7.1908 Python3.8 ビルド Scrapy 開発環境 [グラフィックチュートリアル]

目次環境CentOSをインストールするyum 国内ミラーソースを構成するサードパーティの依存関係をイ...

フレックスレイアウトは、上下固定、中間スライドのレイアウトモードを実現します。

この記事では、主に、上下固定と中スライドレイアウトを実現するためのフレックスレイアウトのレイアウト方...

CSS スクロールバースタイル変更コード

CSS スクロールバースタイル変更コード .scroll::-webkit-scrollbar { ...

CSS 疑似要素を使用して複数の連続する要素のスタイルを制御する方法

CSS 疑似要素を使用して要素を制御する場合、一部の要素のスタイルを変更する必要があることがよくあり...

tbodyタグの魔法はテーブルコンテンツの表示を高速化します

他の人のウェブページを保存して見たことがあると思いますが、特にdwで開くと、多くのウェブページに&l...

Firefox で Webdings フォントをサポートする方法

Firefox、Opera、その他のブラウザは Webdings フォントをサポートしていません。回...

Vueのカスタムイベントコンテンツ配信の詳細な説明

1. これは理解するのが少し複雑なので、原理を注意深く読んで自分で入力していただければ幸いです。 &...

docker run後、ステータスは常にExitedになります

追加するdocker run -it -name test -d nginx:latest /bin...

Vue2.0/3.0双方向データバインディングの実装原理の詳細説明

Vue2.0/3.0双方向データバインディングの実装原理双方向データバインディングとは、データの変更...

Linux リモート管理と sshd サービス検証の知識ポイントの詳細な説明

1. SSHリモート管理SSH の定義SSH (Secure Shell) は、主にキャラクタ イン...