2

此查询不起作用:

WITH a AS 
(SELECT 1 AS c1)
SELECT
    *
FROM
    a 


UNION ALL

WITH b AS 
(SELECT 1 AS c1)
SELECT
    *
FROM
    b

你能帮忙吗?

实际查询使用表,但在示例中不是必需的。

非常感谢

4

2 回答 2

7
;WITH a AS 
(SELECT 1 AS c1), 
b AS 
(SELECT 1 AS c1)
SELECT
    *
FROM
    a 
UNION ALL
SELECT
    *
FROM
    b
于 2012-10-01T16:30:41.720 回答
2

简单的答案:你打破了查询;-)

让我解释:

  • UNION 关键字接受 2 个“查询”并将它们合二为一。
  • WITH 关键字不能在查询中使用,它只对一个查询有效
  • WITH 可用于定义多个 CTE

所有这些的结果是您希望在 UNION 查询之前定义两个 CTE(a 和 b)。将 WITH 放在 UNION 查询中会破坏 UNION(因为 WITH 总是在查询之外(之前)。

于 2012-10-02T11:19:09.990 回答