-2
請參考下面的SQL DDL:不確定有關SQL右連接
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
我最初預計會有三個結果。爲什麼有兩個結果?我意識到這是一個基本問題,但我以前沒有使用過這樣的SQL語句。
我預期三行的原因是因爲以下查詢返回一行:
select tablea.* from tablea
left join tableb on tablea.id=tableb.wid
和以下查詢返回兩行:
select tablea.* from tablea
right join tablec on tablea.id=tablec.id
和2 + 1 = 3。
如果您選擇tableb。*(其中只有(1,1)),結果如何爲「2 3」? – Blorgbeard
http://sqlfiddle.com/#!3/bc68c/1 < - 我的結果不同。 – Blorgbeard
aviod右連接,它們可以被重寫爲左連接,它使得它更易於閱讀和理解 – exussum