2012-02-03 143 views
0

我有一個mySQL數據庫具有重複的記錄,從附加的圖像。mySQL中的重複記錄

enter image description here

我要求的查詢,刪除基於日期+時間都重複的記錄,所有表(foreachtables)在DB

感謝

+0

看一看這個問題 - http://stackoverflow.com/questions/9093151/removing-duplicate-data- from-a-table-using-mysql/9093456#9093456 – Devart 2012-02-03 14:23:40

+0

這個答案會幫你做你想做的事情:http://stackoverflow.com/a/3312098/489560 – 2012-02-03 14:25:43

回答

1

據我所見,你不要有自動增量主鍵或外鍵。 如果你沒有外鍵或關係表,首先你可以列出所有的表。之後,您可以創建一個表的臨時「鏡像」(例如,autogrill)。 然後,你可以做:

INSERT INTO TemporalTable 
SELECT DISTINCT 

INSERT INTO TemporalTable 
SELECT Id, Date, Time FROM autogrill GROUP BY Id, Date, Time HAVING COUNT(*) > 1 

截斷或DELETE FROM

沒有在那裏,然後再次把你的數據與

INSERT INTO autogrill 
SELECT * FROM TemporalTable 

要知道,如果你有主鍵這樣做。

0

您可以使用此導出表請求:

SELECT * FROM autogrill GROUP BY id 

然後,清空您的表格,並導入您之前創建的導出。我不知道另一種簡單的方法,只使用一個請求來清除重複條目。

0

執行此操作的一個簡單方法是將所有不同的記錄複製到新表格或導出中。然後刪除原始表格中的所有記錄並將它們複製回來。

1

您是如何爲此創建STORED PROCEDURE的?

DELIMITER $$ 

CREATE PROCEDURE `DeleteDup`() 

    BEGIN 
     -- Drops the table. 
     DROP TABLE bad_temp; 

     -- Creates a temporary table for distincts record. 
     CREATE TABLE bad_temp(id INT, name VARCHAR(20)); 

     -- Selects distinct record and inserts it on the temp table 
     INSERT INTO bad_temp(id,name) SELECT DISTINCT id,name FROM bad_table; 

     -- Delete All Entries from the table which contains duplicate 
     -- (you can add also condition on this) 
     DELETE FROM bad_table; 

     -- Selects all records from temp table and 
     -- inserts back in the orginal table 
     INSERT INTO bad_table(id,name) SELECT id,name FROM bad_temp; 

     -- Drops temporary table. 
     DROP TABLE bad_temp; 
    END$$ 

DELIMITER ; 

請將表名和列名更改爲所需的模式。

所以當創建完STORED PROCEDURE,你可以使用它像這樣:

CALL DeleteDup(); 
0

出口NULL,如果表有自動遞增的源使用別名,例如:

INSERT INTO product 
SELECT NULL,p.product_sku, 
        p.product_s_desc, 
        p.product_desc, 
        p.product_thumb_image, 
        p.product_full_image, 
        p.product_tech_data, 
        p.product_publish, 
        p.product_weight, 
        p.product_weight_uom, 
        p.product_length, 
        p.product_width, 
        p.product_height, 
        p.product_lwh_uom, 
        p.product_url, 
        p.product_in_stock, 
        p.product_available_date, 
        p.product_special, 
        p.create_date, 
        p.modify_date, 
        p.product_name, 
        p.attribute 
FROM product AS p WHERE p.product_id=xxx;