This might work for you:select t4.worker_id      ,sum(t4.s_time)  from (select t3.worker_id              ,t3.s_time          from (select t1.worker_id                      ,t1.project_id                      ,t1.s_time                  from searchtag1 as t1                 where exists (select *                                 from searchtag2 as t2                                where t2.worker_id=t1.worker_id                              )                union all                select t2.worker_id                      ,t2.project_id                      ,t2.s_time                  from searchtag2 as t2                 where exists (select *                                 from searchtag1 as t1                                where t1.worker_id=t2.worker_id                              )               ) as t3         group by t3.worker_id                 ,t3.project_id       ) as t4 group by t4.worker_id
Maybe we can cut away one subselect, like this:select distinct t3.worker_id      ,sum(t3.s_time)  from (select t1.worker_id              ,t1.project_id              ,t1.s_time          from searchtag1 as t1         where exists (select *                         from searchtag2 as t2                        where t2.worker_id=t1.worker_id                      )        union all        select t2.worker_id              ,t2.project_id              ,t2.s_time          from searchtag2 as t2         where exists (select *                         from searchtag1 as t1                        where t1.worker_id=t2.worker_id                      )       ) as t3 group by t3.worker_id         ,t3.project_id
ps.: syntax error might occur, as my only developement tool right now is notepad :-D