作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在数据库中有两个表,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);
这会执行以下操作:
由于表 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/
我是一名优秀的程序员,十分优秀!