gpt4 book ai didi

sql-server - 从 SQL Server 的子查询中选择多列

转载 作者:行者123 更新时间:2023-12-01 07:04:21 25 4
gpt4 key购买 nike

我知道如何从子查询中选择一个字段:

SELECT 
ID, fck, f1,
(SELECT f2 FROM tbl2 Y WHERE Y.ID = T.fck) AS f2
FROM
tbl1 T

如果我需要从子查询中选择两列,实际上我这样做:
SELECT 
ID, fck, f1,
(SELECT f2 FROM tbl2 Y WHERE Y.ID = T.fck) AS f2,
(SELECT f3 FROM tbl2 Y WHERE Y.ID = T.fck) AS f3
FROM
tbl1 T

有没有办法避免两个子查询?就像是:
SELECT 
ID, fck, f1,
(SELECT f2, f3 FROM tbl2 Y WHERE Y.ID = T.fck) AS f2, f3
FROM
tbl1 T

数据库是 SQL Server 2008 R2。

我知道这个简单的例子可以使用 JOIN 重写,但在实际情况下,没有使用 JOIN 的等效形式。

最佳答案

您可以使用 OUTER APPLY :

SELECT t1.ID, t1.fck, t1.f1, t3.f2, t3.f3
FROM tbl1 AS t1
OUTER APPLY (
SELECT f2, f3
FROM tbl2 AS t2
WHERE t2.ID = t1.fck) AS t3
SELECT子句包含标量值,因此它无法处理返回多个字段或一个字段的多个记录的子查询。

关于sql-server - 从 SQL Server 的子查询中选择多列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35412381/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com