Computer >> Máy Tính >  >> Lập trình >> MySQL

Khái niệm về bảng dẫn xuất liên quan đến truy vấn con MySQL là gì?

Trên thực tế, khi một truy vấn con MySQL bắt đầu ở mệnh đề FROM thì tập kết quả được tạo ra được gọi là bảng dẫn xuất. Loại truy vấn con tạo ra các bảng dẫn xuất được gọi là truy vấn con cụ thể hóa. Bạn có thể hiểu điều này với sự trợ giúp của ví dụ sau sử dụng dữ liệu từ bảng "ô tô" -

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)

Bây giờ, truy vấn sau sẽ tạo ra một bảng dẫn xuất -

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)

Bảng dẫn xuất ở trên trả về tổng giá mà mỗi chiếc ô tô đang có, sau đó truy vấn bên ngoài trả về giá trị trung bình.

Chúng ta phải cung cấp bí danh cho tất cả các bảng dẫn xuất. Trong trường hợp này, chúng tôi đã đặt cho bảng dẫn xuất của mình một bí danh của các tổng.

Nếu chúng tôi chỉ chạy truy vấn con, chúng tôi có thể thấy bảng dẫn xuất -

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)