クエリ定義:
すべての生徒とすべての教師を表示し、名前が同じ人を一覧表示します。
同じ FirstName を持つ学生と教師を含めたい。
それらが複数回繰り返されても問題ありません。各生徒として、教師はそれぞれ一意の StudentID、StaffID を持ちます。
データ:
Student Table:
StudFirstName
David
John
スタッフ テーブル:
StfFirstName
David
Arnold
期待される結果: デビッド
インターネットでMysql Full Outer Join Workaroundを検索したところ、
以下の 2 つの手法が見つかりました。
テクニック 1: ユニオンオールを使用する:
Select Students.StudFirstName
from Students
Left Outer Join Staff
On Students.StudFirstName = Staff.StfFirstName
Union all
Select Students.StudFirstName
from Students
Right Outer Join Staff
On Students.StudFirstName = Staff.StfFirstName
where Staff.StfFirstName is null;
テクニック 2:ユニオンの使用:
Select Students.StudFirstName
from Students
Left Outer Join Staff
On Students.StudFirstName = Staff.StfFirstName
Union
Select Students.StudFirstName
from Students
Right Outer Join Staff
On Students.StudFirstName = Staff.StfFirstName;
手法 3: しかし、クエリ 3 を使用して期待どおりの結果が得られました。
Select Students.StudFirstName
from Students,Staff
where Students.StudFirstName = Staff.StfFirstName;
私の質問:
テクニック 1 と 2 を使用して同じ結果を得るにはどうすればよいですか?
テクニック 1、2、および 3 ですべて同じ結果が得られる場合の違いは何ですか? どのテクニックをいつ使用する必要がありますか?