mySQL中的重复记录
答
据我所见,你不要有自动增量主键或外键。 如果你没有外键或关系表,首先你可以列出所有的表。之后,您可以创建一个表的临时“镜像”(例如,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
要知道,如果你有主键这样做。
答
您可以使用此导出表请求:
SELECT * FROM autogrill GROUP BY id
然后,清空您的表格,并导入您之前创建的导出。我不知道另一种简单的方法,只使用一个请求来清除重复条目。
答
执行此操作的一个简单方法是将所有不同的记录复制到新表格或导出中。然后删除原始表格中的所有记录并将它们复制回来。
答
您是如何为此创建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();
答
出口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;
看一看这个问题 - http://stackoverflow.com/questions/9093151/removing-duplicate-data- from-a-table-using-mysql/9093456#9093456 – Devart 2012-02-03 14:23:40
这个答案会帮你做你想做的事情:http://stackoverflow.com/a/3312098/489560 – 2012-02-03 14:25:43