-2

以下の SQL DDL を参照してください。

create table tablea (id int identity, name varchar(30))
create table tableb (id int identity, wid int, rid int)
create table tablec (id int)

insert into tablea(name) values ('ian')
insert into tableb(wid,rid)values (1,1)
insert into tablec values(1)
insert into tablec values(2)
insert into tablec values(3)

および以下の SQL ステートメント:

select tablea.* from tablea
left join tableb on tablea.id=tableb.wid
right join tablec on tablea.id=tablec.id

これで何が期待できるかわかりませんでした。結果は次のとおりです。

2
3

最初は3つの結果を期待していました。なぜ2つの結果があるのですか?これは基本的な質問だと思いますが、このような SQL ステートメントを使用したことがありません。

3 つの行を期待した理由は、次のクエリが 1 つの行を返すためです。

select tablea.* from tablea
left join tableb on tablea.id=tableb.wid

次のクエリは 2 つの行を返します。

select tablea.* from tablea
right join tablec on tablea.id=tablec.id

2+1=3 です。

4

1 に答える 1