Dùng Sub-Queries

Một phần của tài liệu Bài giảng SQL SERVER tin chi) (Trang 62)

Subqueries là một câu lệnh Select mà nó trả về một giá trị đơn hoặc một tập các giá trị và nó được nằm trong các câu lệnh như Select, Insert, Update, or Delete. Một SubQuery có thể được dùng bất kỳ nơi nào trong biểu thức được cho phép. Một SubQuery cũng được

gọi trong một truy vấn khác, hoặc một câu lệnh select có subquery cũgn có thể được gọi từ một câu Select khác (32 cấp).

 Ngắt câu lệnh phức tạp thành những đoạn truy vấn đơn giản.  Trả lời một truy vấn từ một truy vấn khác.

 Các Sub Query hầu như có thể viết bằng Join và SQL Server luôn luôn thi hành những câu lệnh Join nhanh hơn SubQueries.

 Không thể dùng SubQueries trên cột hình ảnh.

/* SELECT statement built using a subquery. */

Lọc ra những Product Name có UnitPrice bằng với Unitprice của ProductName là 'Sir Rodney''s Scones'

SELECT ProductName FROM Products WHERE UnitPrice =

(SELECT UnitPrice FROM Products

WHERE ProductName = 'Sir Rodney''s Scones')

/* SELECT statement built using a join that returns the same result set. */

SELECT ProductName FROM Products AS Prd1 JOIN Products AS Prd2

ON (Prd1.UnitPrice = Prd2.UnitPrice) WHERE Prd2.ProductName = 'Sir Rodney''s Scones'

Dùng từ khóa IN trong subquery.

Lọc ra những OrderId, EmployeeId do những Employee ở City Seattle Order. SELECT OrderId, EmployeeID AS EmpID

FROM Orders WHERE EmployeeID IN ( SELECT EmployeeId FROM Employees WHERE City='Seattle' ) ORDER BY OrderID

Dùng các toán tử so sánh trong Subquery: Các toán tử bao gồm =, >, >=, <, <=, <>, >=ALL, > ANY, ….

Lọc ra những OrderId, ProductId, UnitPrice mà có Unitprice lớn hơn nhữ Unitprice được bán bởi EmployeeID=5

SELECT OrderId, [Order Details].ProductId, [Order Details].UnitPrice

FROM [Order Details]

WHERE Unitprice > ALL ( SELECT [Order Details].UnitPrice

FROM [Order Details] JOIN Orders ON [Order Details].OrderId=

Orders.OrderId

where Orders.EmployeeID=5 )

ORDER BY [Order Details].UnitPrice,OrderID) ORDER BY UnitPrice.OrderID

Dùng từ khóa EXISTS, NO EXISTS trong subquery:

Lọc ra những OrderId ứng với các CustomerId mà những Customer này ở London City.

SELECT OrderId, CustomerId FROM Orders

WHERE EXISTS ( SELECT * FROM Customers WHERE

Customers.CustomerId=Orders.CustomerId AND City='LonDon'

) ORDER BY OrderID

Một phần của tài liệu Bài giảng SQL SERVER tin chi) (Trang 62)

Tải bản đầy đủ (PDF)

(99 trang)