gpt4 book ai didi

php - 使用PHP,比较两个单列MYSQL表,添加表A中不存在于表B中的记录,删除表中不存在的记录

转载 作者:行者123 更新时间:2023-11-29 13:02:02 26 4
gpt4 key购买 nike

我在数据库中有两个表,A 和 B。每个表仅包含一列,即电子邮件。所以我想对照表A检查表B中的每封电子邮件,如果存在,则将其删除;如果不存在,请添加。

我该怎么做?

最佳答案

理想情况下,您应该使用纯 SQL 来完成此操作,而不必使用 php。

假设您的表 A 具有列 a 整数,表 B 具有列 b 整数。然后你可以做这样的事情:

create temporary table X as select a from A join B on A.a=B.b;
delete from B where b in (select a from X);
delete from A where a in (select a from X);
insert into A (a) (select b from B);

这会执行以下操作:

  1. 创建一个临时表并将 A 和 B 中都存在的所有记录插入其中
  2. 从 B 中删除两个表中都存在的所有记录
  3. 从 A 中删除两个表中都存在的所有记录
  4. 将 B 中剩余的所有内容插入到 A 中

由于表 X 是临时创建的,因此当数据库连接关闭时它将自动删除。

现在,如果您需要从 PHP 调用它,您可以执行以下操作:

$db = new PDO($CONNECT_STRING, USERNAME, PASSWORD);
$db->exec("create temporary table X as select a from A join B on A.a=B.b");
$db->exec("delete from B where b in (select a from X)");
$db->exec("delete from A where a in (select a from X)");
$db->exec("insert into A (select b from B)");
$db = null;

编辑:

如果您需要的只是 B 中不存在于 A 中的记录,那么您可以执行如下简单的 SQL:

select b from B where b not in (select a from A)

关于php - 使用PHP,比较两个单列MYSQL表,添加表A中不存在于表B中的记录,删除表中不存在的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23203725/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com