夥計們,我有兩個基本表(id
,first_name
)。在MySQL中比較一個表與另一個表
我想運行表1對錶2,刪除重複,並吐出表1
做什麼用PHP/MySQL來做到這一點,最簡單的方法的清潔的版本?
謝謝。
夥計們,我有兩個基本表(id
,first_name
)。在MySQL中比較一個表與另一個表
我想運行表1對錶2,刪除重複,並吐出表1
做什麼用PHP/MySQL來做到這一點,最簡單的方法的清潔的版本?
謝謝。
這將刪除t1
的所有記錄也存在於t2
,讓你有一個精簡t1
,但可能在t2
記錄中不存在t1
:
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
)
*您可以根據Brian Hooper的建議,要考慮使用EXISTS
而不是IN
。
這將兩個表合併成第三個表(t3
),沿途刪除重複:
SELECT * INTO t3
FROM t1 UNION SELECT * FROM t2
這將用於SQL Server(絕對)和MySQL(我認爲),但MySQL的支持CREATE TABLE table_name AS select-statement
,所以你可以使用:
CREATE TABLE t3 AS
(SELECT * FROM t1 UNION DISTINCT SELECT * FROM t2)
*的DISTINCT
關鍵字是可選的 - 這是默認的行爲
DELETE FROM table1 t1
WHERE EXISTS (SELECT *
FROM table2 t2
WHERE t2.id = t1.id AND
t2.first_name = t1.first_name);
我更喜歡IN的存在,在過去我遇到了麻煩,花了很長時間。
這是不使用子查詢(未測試):
DELETE t1
FROM table1 t1
JOIN table2 t2
ON t2.id = t1.id
AND t2.first_name = t1.first_name
你的意思是「刪除從表1中的一切,在表2中複製」或「添加表1和表2中的內容一起,然後刪除任何重複「? – gkrogers 2010-07-01 11:27:07