列のあるテーブルTABLE1があります。
key, person, date, type, trait1, trait2, trait3, trait4, trait 5
ここで、TABLE1から2つの一時テーブルを作成するとします。
create temp1 as
select key, person, date, trait1, trait2
from TABLE1
where trait1=trait2
create temp2 as
select key, person, type, trait3, trait4
from TABLE1
where type='A' and trait3=trait4
次に、次のようにテーブルを結合する場合:
create table TABLE2 as
select A.key, A.person, A.date, B.type, A.trait1, A.trait2, B.trait3, B.trait4
from temp1 A, temp2 B
where A.key = B.key and A.person=B.person
次のように、元のTABLE1からTABLE2を作成した場合と同じ結果が得られますか。
create table TABLE2 as
select key, person, date, type, trait1, trait2, trait3, trait4
from TABLE 1
where trait1=trait2 and type='A' and trait3=trait4
論理的には、これは同じ結果をもたらすようですよね?この例は主に私の質問を説明するためのものです。それぞれの異なる条件に基づいてテーブルを2つのサブテーブルにフィルタリングし、次にこのように結合すると、両方の条件で元のテーブルを単純にフィルタリングした場合と同じ結果になりますか?
key
/がperson
各行を一意に定義する場合、結果は非常に近くなります。結合は、最初の条件に一致する行をそれ自体と結合しますが、2番目の条件に一致する場合に限ります。
それらはいつ違うのでしょうか?これは、条件A.key = B.key and A.person = B.person
が一致する行を取得できない場合です。これが発生したときのどちらかでしょうkey
かperson
でしたNULL
。
もちろん、key
/person
が特定の行を一意に識別しない場合、2つの方法が異なることは簡単です。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加