SELECT Orders.OrderNumber, LineItems.Quantity, LineItems.Description
FROM Orders
JOIN LineItems
ON LineItems.LineItemGUID =
(
SELECT TOP 1 LineItemGUID
FROM LineItems
WHERE OrderID = Orders.OrderID
)
Trong SQL Server 2005 trở lên, bạn chỉ có thể thay thế INNER JOIN
với CROSS APPLY
:
SELECT Orders.OrderNumber, LineItems2.Quantity, LineItems2.Description
FROM Orders
CROSS APPLY
(
SELECT TOP 1 LineItems.Quantity, LineItems.Description
FROM LineItems
WHERE LineItems.OrderID = Orders.OrderID
) LineItems2
Xin lưu ý rằng TOP 1
không có ORDER BY
không mang tính xác định:truy vấn này bạn sẽ nhận được cho bạn một chi tiết đơn hàng cho mỗi đơn đặt hàng, nhưng nó không được xác định sẽ là chi tiết đơn hàng nào.
Nhiều lệnh gọi của truy vấn có thể cung cấp cho bạn các chi tiết đơn hàng khác nhau cho cùng một đơn hàng, ngay cả khi cơ bản không thay đổi.
Nếu bạn muốn thứ tự xác định, bạn nên thêm ORDER BY
mệnh đề cho truy vấn trong cùng.
Ví dụ sqlfiddle