3
A B   C D
1 3   3 3
3 3  

結果は明らかに、自然に結合した後です

A B C D
1 3 3 3
3 3 3 3

どうしてこれなの?自然結合には、2つのケースで同様の属性が必要だと思いましたか?最初のテーブルにはCまたはD属性すらありませんが、どのように結合できますか?

たとえば、私たちの教授は、最初の結果の行ではCが同じであり、2番目の行でも同じであるため、これら2つが結合すると言いました。

A B C    C D
1 2 3    3 1
4 5 6    6 2
7 8 9

それとも、通常どおりにマージされますか?そこの2番目のテーブルに62の後に21があった場合、マージはどのように表示されますか?

4

3 に答える 3

1

相互結合には、いかなる種類の一致条件も必要ありません。セットAのすべての行が、セットBのすべての行と一致します。

他のタイプの結合(、、、、)INNERはすべて条件に一致するため、通常はより制限されます(つまり、「セットAの行とセットBの行のみを結合する(場合のみ) 」は、セットAの列の値です。セットBの列の値と一致します")。OUTERLEFTRIGHTiffCC

ただし、条件を常に真にするだけで、このような結合を効果的に結合できます。CROSS

SELECT *
FROM SetA
LEFT INNER JOIN SetB
    ON 1 = 1  -- Voila, instant cross join
于 2012-10-19T02:07:10.677 に答える
1

最初の例では、結合する共通のフィールドがないため、両方のテーブルの可能なすべての組み合わせを返すだけです。

2番目のセットには共通のフィールドがあるため、結果セットは次のようにフィルタリングされます。

A B C D
1 2 3 1
4 5 6 2
于 2012-10-19T02:07:26.797 に答える
0

同様の列名が存在する場合は、それらをマージします。ただし、自然結合では、一意の列名ごとに常に列が作成されます。

ここでの結合に関する優れた情報/例。 http://www.w3resource.com/sql/joins/

于 2012-10-19T02:12:36.140 に答える