0

この単純なスキーマを考えると:

create table A(pk int primary key, R1 int, R2 int);
create table B(pk int primary key); 

次のクエリを実行し、以下に示すように OR を使用して結合するとどうなりますか?

select *
from A
join B
on A.R1 = B.pk or A.R2 = B.pk

次のケースに興味があります。

R1 と R2 の両方が B の異なる PK を指している行が存在する場合はどうなりますか? 結合の結果、複数のレコードが作成されますか? それとも、デフォルトで or の左側に設定され、A.R1 = B.pk と一致しますか?


PS: 私はタブレットでコードを読んでいて、それをテストするための DB を持っていないので、自分で実行するように言わないでください :) グーグルで試しましたが、正確な状況が見つかりませんでした。

4

1 に答える 1

2

2 つの行が得られます。

インターネットがあれば、SQL Fiddleを処理するためのデータベースが常にあります。リンクは質問に対する回答です。

于 2013-03-23T18:16:11.417 に答える