我试图解决这个多连接问题,我有两个表
INTERESTED_IN
email item
-----------------------
bob@email.com widgetA
karen@email.com widgetA
karen@email.com widgetB
sue@email.com widgetC
tony@email.com widgetA
tony@email.com widgetB
tony@email.com widgetC
PURCHASED
email item
-----------------------
bob@email.com widgetA
karen@email.com widgetA
tony@email.com widgetB
julie@email.com widgetC
目标:返回存在于interested_in 表和购买表中的人的电子邮件和项目,但只返回不在购买表中的项目。所以结果表会像这样
email item
-----------------------
karen@email.com widgetB
tony@email.com widgetA
tony@email.com widgetC
从概念上讲,我知道如何做到这一点,但由于数据集可能非常大,我很难找到最有效的方法来做到这一点。有人可以告诉我最好的方法来做到这一点。
谢谢!
更新
SELECT email, item
FROM (
SELECT i.email, i.item
FROM interested_in i
INNER JOIN purchased p ON i.email = p.email
)
MINUS
SELECT email, item
FROM purchased