1

ロケーションテーブルがあります。このテーブルにツリーとして格納されている各場所。レコードは、他の場所などのサブロケーションにすることができます。
ロケーション テーブルで、次の 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の代わりにUNION ALLを使用する必要があることを示していますが、UNION ALLは繰り返される行を返します。UNION のみを使用する場合のように、個別の行を選択したい。

SQLのWITHステートメント内でUNIONキーワードを使用するにはどうすればよいですか?

4

2 に答える 2

0

外側の選択のUNION ALL代わりにUNION追加します。SELECT DISTINCT * FROM LocationTree

于 2013-05-03T09:54:03.747 に答える