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ポップアップ透明レイヤーインスタンスのサイズを設定でき、比例することができます

推薦する

よくあるNginxの設定ミスの例

目次ルートの場所が見つかりませんオフバイスラッシュ安全でない変数の使用スクリプト名$uri を使用す...

js の getBoundingClientRect() メソッドの詳細な説明

1. getBoundingClientRect() 分析getBoundingClientRect...

Web ページの HTML コードの説明: 順序付きリストと順序なしリスト

このセクションでは、HTML のリスト要素について学習します。リストは、Web サイトのデザインにお...

MySQL の時間タイプとモードの詳細

目次1. MySQL の時刻型2. タイムゾーンを確認する3. 不正な時間値4. 厳密モード5. 事...

CenterOS7 インストールおよび構成環境 jdk1.8 チュートリアル

1. まずcenterosに付属のJDKをアンインストールします rpm-qa|grepopenjd...

Vue 円形パーセンテージ プログレスバー コンポーネントの機能の実装

必要な方はどなたでも参考にしてください。試してみて問題が見つかった場合は、メッセージを残してお知らせ...

HTML+CSSを使用してマウスの動きを追跡する

ユーザーがプライバシーを意識するようになり、オンライン トラッキングに対する予防策を強化するにつれて...

便利なモバイルスクロールプラグイン BetterScroll

目次スクロールをスムーズにするBetterScrollのスクロール体験慣性ローリングエッジリバウンド...

入力テキスト ボックスと画像検証コードの位置合わせの問題 (画像は常に入力より 1 つ上になります)

Web ページ制作では、input と img が同じ行に配置されることが多く、img タグが常に ...

CSS 表示属性のインラインブロックレイアウト実装の詳細な説明

CSS 表示プロパティ注: !DOCTYPE が指定されている場合、Internet Explore...

Docker コンテナのマウントディレクトリ操作の表示

Dockerコンテナのマウントディレクトリ情報のみを表示する docker 検査 --format ...

MySQLグループクエリ最適化方法

MySQL はほとんどの場合、GROUP BY クエリと DISTINCT クエリを同様に処理します...

トリガーメソッドを使用して、ファイルタイプの入力をクリックせずにポップアップファイル選択ダイアログボックスを実現します。

トリガー メソッドを使用できます。JavaScript にはネイティブのトリガー関数はありません。自...

React+TypeScriptプロジェクト構築事例解説

React プロジェクトの構築は非常に簡単ですが、Typescript と組み合わせると、実際にはそ...

Linux システムで HugePages をすばやく構成するための完全な手順

序文Linux システムの HugePages と Oracle データベースの最適化については、関...