Mysql 为什么只在最后一条记录中插入重复记录?

Mysql 为什么只在最后一条记录中插入重复记录?,mysql,stored-procedures,cursor,Mysql,Stored Procedures,Cursor,我从我的过程中得到一个重复的记录,其中插入了330多条记录。 但只有在最后一张唱片上。换句话说,最后两条记录不是不同的,它们是相同的。这个过程允许复制最后一条记录的原因是什么 DELIMITER $$ DROP PROCEDURE IF EXISTS `zzExclude_Products` $$ CREATE DEFINER=`root`@`%` PROCEDURE `zzExclude_Products`() BEGIN DECLARE done INT DEFAULT 0; DECLA

我从我的过程中得到一个重复的记录,其中插入了330多条记录。 但只有在最后一张唱片上。换句话说,最后两条记录不是不同的,它们是相同的。这个过程允许复制最后一条记录的原因是什么

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');

谢谢,我查过了,在查找表中没有重复。