MySQL の一般的なテーブル式

Preet Sanghavi 2023年1月30日
  1. INSERT ステートメントを使用した student_dates および student_details テーブルへのエントリの挿入
  2. MySQL の一般的なテーブル式
MySQL の一般的なテーブル式

このチュートリアルは、MySQL で一般的なテーブル式を使用する方法を理解することを目的としています。

ほとんどのデータアナリストは、さまざまなクエリの結果を保存して、それらを別々のクエリとマージする必要があります。共通のテーブルの助けを借りて、式を可能にすることができます。これらは、WITH 句と呼ばれることもあります。

これをもっと深く理解してみましょう。

ただし、始める前に、動作する 2つのダミーテーブルを作成します。ここでは、いくつかの行とともにテーブル student_dates を作成します。

-- create the table student_dates
CREATE TABLE student_dates(
  stu_id int,
  stu_firstName varchar(255) DEFAULT NULL,
  stu_date date,
  primary key(stu_id)
);

同様に、次のクエリを使用して、テーブル student_details といくつかの定義済み行を作成できます。

-- create the table student_details
CREATE TABLE student_details(
  stu_id int,
  stu_firstName varchar(255) DEFAULT NULL,
  stu_lastName varchar(255) DEFAULT NULL,
  primary key(stu_id)
);

INSERT ステートメントを使用した student_dates および student_details テーブルへのエントリの挿入

student_dates は、名前の付いたテーブルを作成し、名前の付いたテーブルを作成します。

INSERT ステートメントを使用して、数人の生徒のデータを追加してみましょう。この操作は次のように実行できます。

-- insert rows to the table student_dates
INSERT INTO student_dates(stu_firstName,stu_date) 
 VALUES("Preet",STR_TO_DATE('24-May-2005', '%d-%M-%Y')),
 ("Dhruv",STR_TO_DATE('14-June-2001', '%d-%M-%Y')),
 ("Mathew",STR_TO_DATE('13-December-2020', '%d-%M-%Y')),
 ("Jeet",STR_TO_DATE('14-May-2003', '%d-%M-%Y')),
 ("Steyn",STR_TO_DATE('19-July-2002', '%d-%M-%Y'));

上記のコードは、student_dates に学生データを入力できます。次のコマンドは、このテーブルを次のように視覚化できます。

SELECT * from student_dates;

上記のコードブロックは、次の出力を生成します。

stu_id	stu_firstName	stu_date
1		Preet			2005-05-24
2		Dhruv			2001-06-14
3		Mathew			2020-12-13
4		Jeet			2003-05-14
5		Steyn			2002-07-19

同様に、student_details テーブルに値を挿入すると、次のクエリを使用してこれを行うことができます。

-- insert rows to the table student_details
INSERT INTO student_details(stu_id,stu_firstName,stu_lastName) 
 VALUES(1,"Preet","Sanghavi"),
 (2,"Rich","John"),
 (3,"Veron","Brow"),
 (4,"Geo","Jos"),
 (5,"Hash","Shah"),
 (6,"Sachin","Parker"),
 (7,"David","Miller");

student_details テーブルは、次のクエリを使用して視覚化できます。

SELECT * from student_details;

出力:

stu_id	stu_firstName	stu_lastName
1	      Preet	        Sanghavi
2	      Rich	        John
3	      Veron	        Brow
4	      Geo	        Jos
5	      Hash	        Shah
6	      Sachin	    Parker
7	      David	        Miller

MySQL の一般的なテーブル式

それでは、WITH 句を理解してみましょう。

この句を使用して、2つのテーブルをマージし、学生の名と日付を取得できます。これらの 2つのテーブルは、主キーとして機能する stu_id を使用して照合できます。

この操作は、次のクエリを使用して実行できます。

WITH
  cte1 AS (SELECT stu_id, stu_firstName FROM student_details),
  cte2 AS (SELECT stu_id, stu_date FROM student_dates)
SELECT stu_firstName, stu_date FROM cte1 JOIN cte2
WHERE cte1.stu_id = cte2.stu_id;

前のクエリでは、次の出力が得られます。

stu_firstName	stu_date
Preet			2005-05-24
Rich			2001-06-14
Veron			2020-12-13
Geo				2003-05-14
Hash			2002-07-19

上記のコードブロックから、stu_firstName 列は、stu_id 列の助けを借りて、関連する stu_date と照合されます。

したがって、WITH 句を使用すると、一般的なテーブル式を効率的に記述して、後で MySQL で使用できる特定の変数にクエリを格納できます。

著者: Preet Sanghavi
Preet Sanghavi avatar Preet Sanghavi avatar

Preet writes his thoughts about programming in a simplified manner to help others learn better. With thorough research, his articles offer descriptive and easy to understand solutions.

LinkedIn GitHub

関連記事 - MySQL Query