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

MySQLサブクエリに関連する派生テーブルの概念は何ですか?


実際、MySQLサブクエリがFROM句で開始すると、生成された結果セットは派生テーブルと呼ばれます。派生テーブルを生成するこのような種類のサブクエリは、マテリアライズドサブクエリと呼ばれます。 「車」テーブルのデータを使用する次の例を使用すると、理解できます-

mysql> Select * from Cars;
+------+--------------+---------+
| ID   | Name         | Price   |
+------+--------------+---------+
|  1   | Nexa         | 750000  |
|  2   | Maruti Swift | 450000  |
|  3   | BMW          | 4450000 |
|  4   | VOLVO        | 2250000 |
|  5   | Alto         | 250000  |
|  6   | Skoda        | 1250000 |
|  7   | Toyota       | 2400000 |
|  8   | Ford         | 1100000 |
+------+--------------+---------+
8 rows in set (0.02 sec)

ここで、次のクエリは派生テーブルを生成します-

mysql> Select AVG(P) FROM(SELECT Name, SUM(Price) P FROM cars GROUP BY Name)AS totals;
+--------------+
| AVG(P)       |
+--------------+
| 1612500.0000 |
+--------------+
1 row in set (0.76 sec)

上記の表は、各車の合計価格を返し、外側のクエリは平均を返します。

すべての派生テーブルのエイリアスを提供する必要があります。この場合、派生テーブルに合計のエイリアスを指定しました。

サブクエリのみを実行すると、派生テーブルが表示されます-

mysql> SELECT Name, SUM(Price) P FROM cars GROUP BY Name ;
+--------------+---------+
| Name         | P       |
+--------------+---------+
| Alto         | 250000  |
| BMW          | 4450000 |
| Ford         | 1100000 |
| Maruti Swift | 450000  |
| Nexa         | 750000  |
| Skoda        | 1250000 |
| Toyota       | 2400000 |
| VOLVO        | 2250000 |
+--------------+---------+
8 rows in set (0.03 sec)

  1. Javaを使用してMySQLテーブルの列数をカウントする

    これには、ResultSetMetaDataを使用します。まずテーブルを作成しましょう- mysql> create table DemoTable    -> (    -> StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY,    -> StudentFirstName varchar(20),    -> StudentLastName varchar(20)    -> ); Query OK, 0 r

  2. このクエリのMySQL構文エラーは何ですか–予約済みキーワードを使用してテーブルを作成しますか?

    MySQLで予約されたキーワードである「groups」という名前のテーブルを作成しようとしたとします。groupsはMySQLで予約されたキーワードであるため、「groups」は使用できません。 「groups」という名前のテーブルの作成中に次のエラーが発生しました- mysql> create table groups −> ( −> id int, −> name varchar(40) −> ); ERROR 1064 (42000): You have an error in your SQL syntax