Mar*_*ala 3 sql-server subquery
我知道如何从子查询中选择一个字段:
SELECT
ID, fck, f1,
(SELECT f2 FROM tbl2 Y WHERE Y.ID = T.fck) AS f2
FROM
tbl1 T
Run Code Online (Sandbox Code Playgroud)
如果我需要从子查询中选择两列,实际上我是这样做的:
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
Run Code Online (Sandbox Code Playgroud)
有一种方法可以避免两个子查询?就像是:
SELECT
ID, fck, f1,
(SELECT f2, f3 FROM tbl2 Y WHERE Y.ID = T.fck) AS f2, f3
FROM
tbl1 T
Run Code Online (Sandbox Code Playgroud)
数据库是SQL Server 2008 R2.
我知道这个简单的例子可能会使用JOIN重写,但实际上有些情况下没有使用JOIN的等效表单.
Gio*_*sos 16
你可以使用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
Run Code Online (Sandbox Code Playgroud)
该SELECT子句包含标量值,因此它不能处理返回多于字段的子查询或一个字段的多个记录.
| 归档时间: |
|
| 查看次数: |
14747 次 |
| 最近记录: |