Những yêu cầu này đủ khó hiểu nên có thể đáng để đánh giá lại mô hình dữ liệu của bạn. Tôi nghĩ UNION
là giải pháp tốt nhất của bạn có thể được sửa đổi để sử dụng UNION ALL
cho hiệu quả.
Tôi đã tập hợp một bản hack dựa trên mutex có thể có nhiều vấn đề phức tạp như bất kỳ truy vấn nào khác trên trang này.
select
coalesce(t2.id, t1.name) AS ID,
coalesce(t2.company, t1.name) AS Company,
if(isnull(t2.id), 'NOT FOUND', 'FOUND') as Status
from (select 0 as mutex union select 1) as m
left join table1 as t1 on 1 = 1
left join table2 as t2 on t1.name = t2.name or (t1.id = t2.id and mutex)
group by coalesce(t2.id, t1.name)
Điều đó nói rằng, vui lòng kiểm tra các truy vấn này một cách cẩn thận và xem qua dữ liệu và kết quả của bạn. Có rất nhiều chỗ cho lỗi tùy thuộc vào dữ liệu đầu vào của bạn.