以下のスクリプトを実行しました。 UserDetails.User#にはAccountDetails.User#というマッチしたレコードはありません。しかし、その結果は、スクリプト内で指定された各AccountDetails.account#と共に、UserDetailsのEvery user#を3回表示します。 SQL結合ステートメントに一致するものがない場合、何も返されませんか?データ型とサンプル値のSQL結合文が予期しないレコードを返しました
少し背景:
UserDetails.user#
datatype = varchar(520)
values in (1,0)
AccountDetails.user#
datatype = varchar(11)
values in (22054414,28581057,26178648)
私が走ったスクリプト:
SELECT a.account# , a.userNum , u.userNum, u.Name
FROM AccountDetails a
JOIN UserDetails u ON a.userNum = u.userNum
WHERE a.account# IN (87173000,11900008,79000082)
サンプル結果:
account#, a.userNum, u.userNum , u.Name
87173000, 22054414, 1, Joe Blow
87173000, 28581057, 1, John Smith
11900008, 22054414, 1, Joe Blow
11900008, 28581057, 1, John Smith
79000082, 22054414, 1, Joe Blow
79000082, 28581057, 1, John Smith
私は通常、代わりに内部結合を使用読みやすいように結合するだけです。しかし、私はそれがここでどのように役立つかは分かりません。 (エンジンがCROSSジョインとして見ている場合を除いて)それは試しにインナーを追加するのですか? – xQbert