在SQL Server中,要从子查询中选择多个列并为主查询中的每个记录创建一条记录,可以使用CROSS APPLY
或OUTER APPLY
操作符。这两个操作符允许您将子查询的结果与主查询的结果进行关联,并为每个主查询记录返回一个子查询记录。
以下是一个示例,展示了如何使用CROSS APPLY
从子查询中选择多个列并为主查询中的每个记录创建一条记录:
-- 假设有一个名为Parent的表,包含两个列:Id和Name
-- 假设有一个名为Child的表,包含三个列:ParentId、Column1和Column2
SELECT P.Id, P.Name, C.Column1, C.Column2
FROM Parent P
CROSS APPLY (
SELECT TOP 1 Column1, Column2
FROM Child C
WHERE C.ParentId = P.Id
ORDER BY C.Column1 ASC
) C;
在这个示例中,我们从Parent
表中选择了Id
和Name
列,并使用CROSS APPLY
从子查询中选择了Child
表中的Column1
和Column2
列。子查询使用TOP 1
仅返回一个结果,并按Column1
升序排序。
CROSS APPLY
和OUTER APPLY
的区别在于,OUTER APPLY
会在子查询没有返回结果时返回NULL值,而CROSS APPLY
会在子查询没有返回结果时过滤掉主查询的该记录。在这个示例中,我们使用了CROSS APPLY
,因为我们只想为每个主查询记录返回一个子查询记录。
请注意,这个示例中的表名、列名和数据可能与您的实际情况不同。您需要根据您的实际需求和数据结构进行调整。
领取专属 10元无门槛券
手把手带您无忧上云