我只需要显示表1和表2中的结果,但不在表3中。基本上,它应该类似于TABLE1,Table2,除了(TABLE1,Table2)和TABLE3之间的INNER JOIN。 Should looks like this - On left side Table1 and Table2, on right side Table3
现在我有了这个:
SELECT mesta_email, mesta_kod
FROM Table1
UNION ALL
SELECT mesta_email, mesta_kod
FROM Table2
// And somehow except values which are in Table3
是的,有人能帮帮我吗?非常感谢。
答案 0 :(得分:1)
有几种不同的方法可以做到这一点。我相信使用mysql
方法outer join/null
做得更好:
select t.*
from (
SELECT mesta_email, mesta_kod
FROM Table1
UNION ALL
SELECT mesta_email, mesta_kod
FROM Table2
) t left join Table3 t3 on t.mesta_email = t3.mesta_email
and t.mesta_kod = t3.mesta_kod
where t3.mesta_email is null
这假设table3
与其他2个表共享相同的结构。
答案 1 :(得分:0)
我会在您使用exists
和not exists
撰写时几乎直接解决问题:
select t1.mesta_email, t2.mesta_kod
from table1 t1
where exists (select 1
from table2 t2
where t2.mesta_email = t1.mesta_email and t2.mesta_kod = t1.mesta_kod
) and
not exists (select 1
from table3 t3
where t3.mesta_email = t1.mesta_email and t3.mesta_kod = t1.mesta_kod
);
exists
/ not exists
优于其他方法的一个优点是重复。如果其中一个表(例如table1
)没有重复,但其他表可能没有重复,则无需删除结果数据集中的重复项。