在 OUTER APPLY 语句中从嵌套查询中进行选择时,嵌套查询似乎在某些情况下只评估一次。
向 Azure 反馈论坛报告的错误:https : //feedback.azure.com/forums/908035-sql-server/suggestions/39428632-microsoft-sql-server-2014-incorrect-result-when-s
这是预期的行为还是我在文档中遗漏了什么,或者这是 SQL Server 中的错误?
另外,是否有可能强制对每一行的嵌套查询进行评估?
测试案例 1
评估 VALUES 中每一行的嵌套 FROM 查询(恕我直言,预期行为)
SELECT
v,
v2
FROM
(VALUES (1), (2), (3), (4)) AS inner_query(v)
OUTER APPLY (
SELECT
MAX(inner_v2) AS v2
FROM (
SELECT
15 AS id,
v AS inner_v2
) AS outer_query
GROUP BY id
) AS outer_apply
Run Code Online (Sandbox Code Playgroud)
结果:
| v | v2|
|---|---|
| 1 | 1 |
| 2 | 2 |
| 3 | 3 |
| …
Run Code Online (Sandbox Code Playgroud)