伙计们,我有两个基本表格(id
,first_name
)。
我想针对表2运行表1,删除重复项,并吐出表1的清理版本。
使用PHP / MySQL执行此操作的最简单方法是什么?
感谢。
答案 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