为什么我只能在最后一个记录中插入重复记录?
问题描述:
我从我的程序中得到一个重复的记录,插入330+条记录。 但只在最后一个记录。换句话说,最后2条记录并不明显,它们是相同的。这个过程是什么让最后一个记录得到重复。为什么我只能在最后一个记录中插入重复记录?
DELIMITER $$
DROP PROCEDURE IF EXISTS `zzExclude_Products` $$
CREATE DEFINER=`root`@`%` PROCEDURE `zzExclude_Products`()
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE VAR_ENTITY_ID VARCHAR(50);
DECLARE CUR_NO CURSOR FOR
SELECT DISTINCT NO
FROM stage_product_data.ITEMMAST AS IM
JOIN stage_product_data.zzLive_Products AS LIVE ON IM.NO = LIVE.SKU
WHERE DIVISION = '30' AND STATUS NOT IN ('XX','YY','ZZ');
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
OPEN CUR_NO;
REPEAT
FETCH CUR_NO INTO VAR_ENTITY_ID;
INSERT INTO zz_CATALOG (TYPE, ENTITY_ID, ESTRICTION_TYPE, RESTRICTION_VALUE)
VALUES ('Product', VAR_ENTITY_ID, 'Country', 'ALL');
UNTIL done END REPEAT;
CLOSE CUR_NO;
END $$
DELIMITER ;
答
这里真的不需要光标。这可以在一个INSERT语句中完成。
INSERT INTO zz_CATALOG
(TYPE, ENTITY_ID, ESTRICTION_TYPE, RESTRICTION_VALUE)
SELECT DISTINCT 'Product', EDPNO, 'Country', 'ALL'
FROM stage_product_data.ITEMMAST AS IM
JOIN stage_product_data.zzLive_Products AS LIVE
ON IM.EDPNO = LIVE.SKU
WHERE DIVISION = '30'
AND STATUS NOT IN ('XX','YY','ZZ');
答
你确定它是程序,而不是你插入的数据中的重复?
谢谢我检查了一下,我没有在查找表中使用。 – JoJo 2011-12-20 16:46:55