Php 从两个不存在的表中进行选择

Php 从两个不存在的表中进行选择,php,sql,database,Php,Sql,Database,我有两张桌子: 表1 id int(11) name varchar(255) email varchar(255) 表2 id int(11) name varchar(255) email varchar(255) 两者都有几千个条目。问题是它们需要相同,表2缺少一些内容 如何检查表1中哪些电子邮件不在表2中,然后将其输出到页面? 我试过: $result = mysqli_query($con,"SELECT email

我有两张桌子:

表1

id       int(11)
name     varchar(255)
email    varchar(255)
表2

id       int(11)
name     varchar(255)
email    varchar(255)
两者都有几千个条目。问题是它们需要相同,表2缺少一些内容

如何检查表1中哪些电子邮件不在表2中,然后将其输出到页面?

我试过:

$result = mysqli_query($con,"SELECT email
                             FROM table2 b
                             WHERE NOT EXISTS (
                             SELECT *
                             FROM table1 a
                             WHERE a.email = b.email)");

但当我var_dump$result时,它返回Null

你落后了。您的查询将为您提供
table2
中不在
table1
中的记录

你想要:

SELECT email
FROM table1 a
WHERE NOT EXISTS (
    SELECT 1
    FROM table2 b
    WHERE b.email = a.email
)
i、 e.“从表1中选择表2中没有的电子邮件”

尝试以下方法:

SELECT email FROM Table1 a WHERE email not in(select email from table2 WHERE not email is null)

如果可能,我宁愿避免嵌套选择:

SELECT a.email
FROM table1 AS a
LEFT JOIN table2 AS b
ON a.email = b.email
WHERE b.email IS NULL
应该可以找到表1中存在但表2中不存在的任何电子邮件地址

如果随后需要将该输出转储到屏幕,而不是
var\u dump
ing结果(因为结果将是
mysqli\u结果
对象),您可以:

$result = mysqli_query($con, "SELECT a.email FROM table1 AS a LEFT JOIN table2 AS b ON a.email = b.email WHERE b.email IS NULL");

if($result) {
  var_dump($result->fetch_all());
}
else {
  echo $con->error();
}

仍然var_dump为Null
$result
不应该为
Null
,这听起来像是另一个问题。。。您确定连接设置正确吗?