我有一张定位表。作为树存储在此表中的每个位置。记录可以是任何其他位置的子位置,等等。
在location表中,我执行以下tsql以生成所有位置及其子位置
WITH LocationTree AS (
SELECT L.* FROM Location L
UNION
SELECT L.* FROM LocationTree LT, Location L where L.ParentLocationID = LT.LocationID
)
SELECT * FROM LocationTree但它给了我一个错误:
Recursive common table expression 'LocationTree' does not contain a top-level UNION ALL operator.错误说明我必须使用UNION、ALL、insead和UNION,但是UNION ALL返回重复的行。我想选择不同的行,比如只使用UNION时。
如何在中的带有语句的中使用UNION关键字?
发布于 2013-05-03 09:45:39
问题在于,您的CTE名称与您的一个表相同:
WITH LT AS (
SELECT L.* FROM Location L
UNION
SELECT L.* FROM LocationTree LT, Location L where L.ParentLocationID = LT.LocationID
)
SELECT * FROM LT对我来说很好
发布于 2013-05-03 09:54:03
在外部选择中添加UNION ALL而不是UNION和SELECT DISTINCT * FROM LocationTree。
https://stackoverflow.com/questions/16355958
复制相似问题