在MySQL中比较一个表与另一个表

时间:2010-07-01 10:02:10

标签: php mysql

伙计们,我有两个基本表格(idfirst_name)。

我想针对表2运行表1,删除重复项,并吐出表1的清理版本。

使用PHP / MySQL执行此操作的最简单方法是什么?

感谢。

4 个答案:

答案 0 :(得分:2)

这将删除t1中同样存在的t2中的所有记录,为您留下精简版t1,但可能包含“{1}}中的记录” t存在于t2

t1

*根据Brian Hooper的建议,您可能需要考虑使用DELETE FROM table1 t1 WHERE t1.id IN (SELECT id from table2 t2 WHERE t2.id = t1.id AND t2.first_name = t1.first_name ) 代替EXISTS

这会将两个表合并到第三个表(IN)中,同时删除重复项:

t3

这适用于SQL Server(绝对)和MySQL(我认为),但MySQL支持SELECT * INTO t3 FROM t1 UNION SELECT * FROM t2 ,因此您可以使用:

CREATE TABLE table_name AS select-statement

* CREATE TABLE t3 AS (SELECT * FROM t1 UNION DISTINCT SELECT * FROM t2) 关键字是可选的 - 这是默认行为

答案 1 :(得分:1)

DELETE FROM table1 t1
    WHERE EXISTS (SELECT *
                      FROM table2 t2
                      WHERE t2.id         = t1.id AND
                            t2.first_name = t1.first_name);

我更喜欢过去遇到麻烦的IN存在,需要花费很长时间。

答案 2 :(得分:0)

为什么不使用

 DELETE FROM table1 WHERE first_name IN (SELECT first_name from table2)

? 如果我错过了什么,请纠正我。

答案 3 :(得分:0)

这不使用子查询(未测试):

DELETE t1 
FROM   table1 t1
JOIN   table2 t2 
    ON  t2.id = t1.id 
    AND t2.first_name = t1.first_name