Đang hoàn thành câu trả lời của @ Microgen ... Vì bạn đã có hai lựa chọn đầu tiên hoạt động như bạn muốn, bạn có thể giữ các kết quả đó trong các bảng tạm thời:
create temporary table tmp1 as <your first select>;
alter table tmp1 add <some index to accelerate your join later>;
create temporary table tmp2 as <your second select>;
alter table tmp2 add <some index to accelerate your join later>;
Sau đó, bạn có thể áp dụng một phép tham gia đơn giản để nhận được kết quả cuối cùng:
select tmp1.id, tmp1.name, tmp1.address, tmp2.occupation
from tmp1 inner join tmp2 using (id)
order by tmp1.id;
Một cách khác để làm điều đó là sử dụng VIEW
, nhưng vì lập chỉ mục không phải là thứ tốt nhất mà họ có, nên tôi sẽ tránh chúng, đặc biệt khi hai select
đầu tiên của bạn phức tạp như vậy.