最初のクエリでは、レベルだけで接続します。したがって、レベル<=1の場合、各レコードを1回取得します。レベル<=2の場合、各レベルを1回(レベル1の場合)+ N回(Nはテーブル内のレコード数)取得します。結果を制限する他の条件がなくても、レベルに達するまでテーブルからすべてのレコードを選択しているだけなので、クロスジョインしているようなものです。レベル<=3の場合、これはこれらの結果ごとに再度実行されます。
したがって、3つのレコードの場合:
- レベル1:3レコード(すべてレベル1)
- レベル2:レベル1の3つのレコード+レベル2の3*3のレコード=12
- レベル3:3 + 3 * 3 + 3 * 3 * 3 =39(実際、各13レコード)。
- レベル4:パターンが見え始めましたか? :)
それは実際にはクロスジョインではありません。クロス結合は、このクエリ結果でレベル2のレコードのみを返しますが、この接続を使用すると、レベル1のレコードとレベル2のレコードが取得されるため、結果は3 + 3*3になります。 3*3レコード。