3つのテーブルからデータを選択する必要があります。第1テーブルと第2テーブルの間でINNER JOINを使用して2番目のテーブルから別のフィールドを取得しています。しかし、一致がない場合、私は別の第一のテーブルfield.Iは、以下のクエリを使用していて、それを交換する必要がありますが、それはそれをユニオンオペレータの代わり
SELECT tba.field, tba.field1, tba.field2 AS test FROM tablea tba
WHERE tba.field NOT IN (SELECT ta.field FROM tablea ta INNER JOIN tableb tb ON ta.field = tb.field)
UNION
SELECT ta.field, ta.field1, tb.field2 AS test FROM tablea ta
INNER JOIN tableb tb ON ta.field = tb.field
UNION
SELECT tc.field, tc.field1, tc.field2 AS test FROM tablec tc
がhttp://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-を参照してください。私にとっては非常にシンプルなSQLクエリですが、クエリのパフォーマンスに関する質問では、少なくとも関連するすべてのテーブルのSHOW CREATE TABLEステートメントとEXPLAIN。 – Strawberry
not inでサブクエリを使用していて、unionで2番目のクエリが同じです。どうして ? –
@strawberry私はリンクを追加しました。 – khalil