我们如何显示内部联接的'反向'。例如,我有一个通过支付处理程序进行的客户实际交易的列表,在本例中为“ Paypal”,但他们从未单击“ Back to Merchant”选项卡,以便我们可以处理其用户名和密码。
此脚本显示了客户列表中的所有人员及其在用户数据库中的关联位置:
SELECT
`Transactions List`.`Customer Email`,
users.Email,
`Transactions List`.`Transaction ID`,
users.`Name`,
users.Phone
FROM
`Transactions List`
INNER JOIN users ON `Transactions List`.`Customer Email` = users.Email
我想做的是显示相反的内容。即所有迷失方向的人。它们确实出现在TRANSACTIONS LIST表中,但是没有出现在USERS表中。
任何人都有一个想法,如何将此MYSQL查询转换为Inverse,以便我们可以快速确定哪些客户没有获得用户帐户?
[这里有一篇帖子“ Inner join inverse Php MySQL”,但没有得到回答,它提出了类似的问题。提出问题的人可能不够清楚:Inner join inverse Php mysql
也“ INNER JOIN”和“ OUTER JOIN”有什么区别?What is the difference between "INNER JOIN" and "OUTER JOIN"?
但是这些方法都没有实际执行我希望脚本执行的操作。
我想要做的是显示[...]出现在TRANSACTIONS LIST表中但没有出现在USERS表中的所有人员。
您可以使用
not exists
:
select t.* from transactions_list t where not exists ( select 1 from users u where t.customer_email = u.email )
[这的另一种表达方式是使用反
left join
(这更符合您的问题,与连接有关):
select t.* from transactions_list t left join users u on t.customer_email = u.email where u.email is null
这意味着:尝试与用户加入每个事务,并过滤不匹配的事务。