SELECT Orders.OrderNumber, LineItems.Quantity, LineItems.Description
FROM Orders
JOIN LineItems
ON LineItems.LineItemGUID =
(
SELECT TOP 1 LineItemGUID
FROM LineItems
WHERE OrderID = Orders.OrderID
)
SQL Server 2005以降では、INNER JOIN
を置き換えるだけで済みます。 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
TOP 1
に注意してください ORDER BY
なし 決定論的ではありません。このクエリでは、注文ごとに1つの広告申込情報が表示されますが、どの広告申込情報になるかは定義されていません。
クエリを複数回呼び出すと、基になるものが変更されていない場合でも、同じ注文に対して異なる広告申込情報が表示される可能性があります。
確定的な順序が必要な場合は、ORDER BY
を追加する必要があります 最も内側のクエリへの句。
sqlfiddleの例