PythonとMySQLで2つのテーブルをLEFT JOIN(左結合)する方法を徹底解説
SQLでは、2つのテーブル間の共通の列や、指定した条件に基づいてテーブルを結合(JOIN)することができます。SQLには内部結合(INNER JOIN)、左外部結合(LEFT JOIN)、右外部結合(RIGHT JOIN)など、さまざまな種類のJOINが用意されており、目的に応じて使い分けることが重要です。
本記事では、その中でも「LEFT JOIN(左結合)」について詳しく解説します。
LEFT JOINとは?
LEFT JOINを使用すると、最初に指定したテーブル(左側のテーブル)のすべてのレコードが必ず結果に含まれます。右側のテーブルからは、結合条件に一致するレコードのみが左側のレコードと紐付けられます。もし左側のテーブルのある行に対して、右側のテーブルに一致するレコードが存在しない場合は、その部分に None(NULL)が設定されます。
つまり、結合条件に関係なく左側のテーブルの全データが保持される点が、LEFT JOINの最大の特徴です。
基本構文
SELECT column1, column2...
FROM table_1
LEFT JOIN table_2 ON condition;
サンプルテーブルの準備
ここでは、「Students(学生)」テーブルと「Department(学科)」テーブルの2つを用意します。
Students テーブル
+----------+--------------+-----------+
| id | Student_name | Dept_id |
+----------+--------------+-----------+
| 1 | Rahul | 120 |
| 2 | Rohit | 121 |
| 3 | Kirat | 125 |
| 4 | Inder | 123 |
+----------+--------------+-----------+
Department テーブル
+----------+-----------------+
| Dept_id | Department_name |
+----------+-----------------+
| 121 | Mathematics |
| 122 | Physics |
+----------+-----------------+
両テーブルに共通して存在する「Dept_id」列をキーとして、LEFT JOINを実行します。なお、StudentsテーブルのDept_id「125」と「123」は、Departmentテーブルには存在しない点に注目してください。
PythonでLEFT JOINを実行する手順
MySQL Connector をインポートする
connect()メソッドでデータベースへの接続を確立するcursor()メソッドでカーソルオブジェクトを作成する適切なSQL文でクエリを作成する
execute()メソッドでSQLクエリを実行するfetchall()で結果を取得し、接続を閉じる
実装例
import mysql.connector
db = mysql.connector.connect(
host="your host",
user="your username",
password="your password",
database="database_name"
)
cursor = db.cursor()
query = "SELECT Students.Id, Students.Student_name, Department.Department_name \
FROM Students LEFT JOIN Department ON Students.Dept_Id = Department.Dept_Id"
cursor.execute(query)
rows = cursor.fetchall()
for x in rows:
print(x)
db.close()
実行結果
(1, 'Rahul', 'CSE')
(2, 'Rohit', 'Mathematics')
(3, 'Kirat', None)
(4, 'Inder', None)
結果のポイント
出力結果を見ると、最後の2行(Kirat と Inder)には Department テーブルに一致するレコードが存在しないため、学科名が None になっています。それでも、これらの行が結果から除外されずに表示されていることが分かります。
このようにLEFT JOINを使えば、右側のテーブルに該当データがなくても、左側のテーブルの情報をすべて取得できます。「学生の一覧を全件表示しつつ、学科が未登録の場合も表示したい」といったケースで特に役立ちます。
-
PythonとTensorFlowで2つの行列を乗算する方法を解説
TensorFlowは、Googleが提供する機械学習フレームワークです。オープンソースとして公開されており、Pythonと組み合わせてアルゴリズムやディープラーニングアプリケーションなどを実装するために利用されています。研究用途から本番運用まで幅広く使われており、複雑な数学的演算を高速に処理できる最適化技術を備えているのが特長です。 その理由の一つは、NumPyと多次元配列を基盤としている点にあります。この多次元配列は「テンソル」と呼ばれます。TensorFlowは深層ニューラルネットワークの構築をサポートし、高いスケーラビリティを持ち、人気のデータセットが多数付属しています。また、GPUに
-
PythonとTensorFlowを使って2つの行列を加算する方法
TensorFlowは、Googleが提供する機械学習フレームワークです。オープンソースとして公開されており、Pythonと組み合わせてアルゴリズムやディープラーニングアプリケーションなどを実装するために広く利用されています。研究用途から本番環境まで幅広い場面で活用されており、複雑な数値計算を高速に実行するための最適化技術が多数搭載されています。この高い処理性能は、NumPyおよび多次元配列の仕組みによって支えられています。これらの多次元配列は「テンソル(tensor)」と呼ばれます。TensorFlowは深層ニューラルネットワークの構築を強力にサポートしており、高い拡張性を持つほか、代表的な