Truy vẫn con trong SQL và cách sử dụng

2022-11-02 21:51:39

Truy vấn con là một câu lệnh SQL có một truy vấn SQL khác được nhúng trong mệnh đề WHERE hoặc HAVING.

Syntax

Cú pháp cho một truy vấn con khi câu lệnh SQL nhúng là một phần của điều kiện WHERE như sau:

SELECT "column_name1"
FROM "table_name1"
WHERE "column_name2" [Comparison Operator]
(SELECT "column_name3"
FROM "table_name2"
WHERE "condition"
);

[Toán tử so sánh] có thể là các toán tử bình đẳng như =,>, <,> =, <=. Nó cũng có thể là một toán tử văn bản chẳng hạn như "LIKE". Phần màu đỏ được coi là "truy vấn bên trong", trong khi phần màu xanh lục được coi là "truy vấn bên ngoài".

Examples

Chúng tôi sử dụng các bảng sau cho các ví dụ của chúng tôi.

Table Store_Information

 Store_Name  Sales  Txn_Date 
 Los Angeles  1500  Jan-05-1999 
 San Diego  250  Jan-07-1999 
 Los Angeles  300  Jan-08-1999 
 Boston  700  Jan-08-1999 

Table Geography

 Region_Name  Store_Name 
 East  Boston 
 East  New York 
 West  Los Angeles 
 West  San Diego 

Example 1: Simple subquery

Để sử dụng một truy vấn con để tìm doanh số của tất cả các cửa hàng ở miền Tây, chúng tôi sử dụng câu lệnh SQL sau:

SELECT SUM (Sales) FROM Store_Information
WHERE Store_Name IN
(SELECT Store_Name FROM Geography
WHERE Region_Name = 'West');

Kết quả:

SUM (Sales)

Trong ví dụ này, thay vì kết hợp trực tiếp hai bảng và sau đó chỉ cộng số tiền bán hàng cho các cửa hàng ở miền Tây, trước tiên chúng tôi sử dụng truy vấn con để tìm ra cửa hàng nào ở khu vực miền Tây và sau đó chúng tôi tổng hợp số tiền bán hàng cho những cửa hàng này.

Lưu ý rằng trong ví dụ này, truy vấn bên trong và truy vấn bên ngoài độc lập với nhau. Loại truy vấn con này được gọi là truy vấn con đơn giản .

Ví dụ 2: Truy vấn con có liên quan

Nếu truy vấn bên trong phụ thuộc vào truy vấn bên ngoài, chúng ta sẽ có một truy vấn con tương quan . Dưới đây là ví dụ về truy vấn con tương quan:

SELECT SUM (a1.Sales) FROM Store_Information a1
WHERE a1.Store_Name IN
(SELECT Store_Name FROM Geography a2
WHERE a2.Store_Name = a1.Store_Name);

Kết quả:

SUM (Sales)

Ở đây, truy vấn bên trong được sử dụng để đảm bảo rằng SQL chỉ tổng hợp số tiền bán hàng từ các cửa hàng xuất hiện trong cả bảng Store_Information và bảng Địa lý.

Lưu ý mệnh đề WHERE trong truy vấn bên trong, trong đó điều kiện liên quan đến một bảng từ truy vấn bên ngoài.



Xem thêm:


Chia sẻ:

Bài viết liên quan