MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

サブクエリを内部結合に変換するにはどうすればよいですか?


次の表のデータを使用していることを理解するために-

mysql> Select * from customers;
+-------------+----------+
| Customer_Id | Name     |
+-------------+----------+
|           1 | Rahul    |
|           2 | Yashpal  |
|           3 | Gaurav   |
|           4 | Virender |
+-------------+----------+
4 rows in set (0.00 sec)

mysql> Select * from reserve;
+------+------------+
| ID   | Day        |
+------+------------+
|    1 | 2017-12-30 |
|    2 | 2017-12-28 |
|    2 | 2017-12-25 |
|    1 | 2017-12-24 |
|    3 | 2017-12-26 |
+------+------------+
5 rows in set (0.00 sec)

さて、以下は車を予約したすべての顧客の名前を見つけるサブクエリです。

mysql> Select Name from customers WHERE customer_id IN (Select id from reserve);
+----------+
| Name     |
+----------+
| Rahul    |
| Yashpal  |
| Gaurav   |
+----------+
3 rows in set (0.00 sec)

これで、次の手順を使用して、上記のサブクエリを内部結合に変換できます-

  • サブクエリで指定された「Reserve」テーブルをFROM句に移動します。

  • WHERE句は、customer_id列をサブクエリから返されたIDと比較します。

したがって、式を2つのテーブルのid列間の明示的な直接比較に変換します。

mysql> SELECT Name from customers, reserve WHERE customer_id = id;
+----------+
| Name     |
+----------+
| Rahul    |
| Yashpal  |
| Yashpal  |
| Rahul    |
| Gaurav   |
+----------+
5 rows in set (0.00 sec)

上記の結果はサブクエリの結果とまったく同じではないことがわかるので、DISTINCTキーワードを使用して、次のように同じ結果を取得します。

mysql> SELECT DISTINCT name from customers,reserve WHERE customer_id = id;
+----------+
| Name     |
+----------+
| Rahul    |
| Yashpal  |
| Gaurav   |
+----------+
3 rows in set (0.03 sec)

  1. Matplotlibで数値をカラースケールに変換するにはどうすればよいですか?

    matplotlibで数値をカラースケールに変換するには、次の手順を実行できます。 ステップ numpyを使用してx、y、cデータ​​ポイントを作成します。 データポイントをPandasデータフレームに変換します。 subplots()メソッドを使用して、新しい図を作成するか、既存の図をアクティブにします。 ホットカラーマップを入手してください。 データを線形に正規化するには、 Normalize()を使用できます クラス。 散布点をxおよびyデータポイントと線形正規化カラーマップでプロットします。 xticksを設定します xデータポイントの場合。 カラーバーを作成するには、ス

  2. Pythonで文字のリストを文字列に変換するにはどうすればよいですか?

    Pythonには、要素間にセパレータを挿入してシーケンスオブジェクト内の要素を結合することで文字列を返すjoin()関数が組み込まれています。区切り文字のない文字列が必要な場合は、null文字列で初期化します >>> lst=['h','e','l','l','o'] >>> str='' >>> str.join(lst) 'hello'