私はmysqlデータベースを使用しています。バグとプロファイルの 2 つのテーブルがあります。Bugs テーブルには、多対 1 の関係によってプロファイルを指す 2 つの列 (assigned_to、qa_contact) があります。これらは私のクエリの簡略化されたバージョンです。
まず、私はこれをやろうとしていましたが、バグテーブルで qa_contact が null である重複行を返します
select
bug_id,
desc,
dev.assigned_to,
qa.qa_contact
from
bugs,
profiles as dev,
profiles as qa
where
assigned_to = dev.userid
and (qa_contact = qa.userid or qa_contact is null)
第二に、私の新しいアプローチは次のとおりです。
select bug_id, desc, dev.assigned_to, qa.qa_contact
from
bugs,
profiles as dev,
profiles as qa
where
assigned_to = dev.userid
and qa_contact = qa.userid
UNION
select bug_id, desc, dev.assigned_to, null
from
bugs,
profiles as dev,
profiles as qa
where
assigned_to = dev.userid
and qa_contact is null
しかし、2 番目のアプローチでは、qa_contact が null である結果を除外します。私は何百万ものレコードを扱っており、結果セットにさらにフィルターを追加したいので、これを行う効率的な方法を提案できますか?