MySQL从union中插入唯一的

时间:2012-07-22 17:47:21

标签: mysql

我之前没有使用过很多数据库,但我理解了一些基础知识。现在,我有两个表,我们将调用表1和表2.我正在尝试创建一个触发器,这样当我将数据插入表1时,它会触发触发器以获取col1的所有不同值表1,我想用它来插入表2.随着更多数据被添加到表1中,毫无疑问会出现重复数据。如果发生重复,我不希望将重复插入到表2中。所以,我认为我可能会使用Union来提取唯一值并将它们插入表2中,但是在联盟之后我不完全确定是什么去做。我是否因为这样思考而疯狂,并且有办法更好地做到这一点?

DELIMITER // 
CREATE TRIGGER testdb 
AFTER INSERT ON testdb.table1
FOR EACH ROW
BEGIN    
    SELECT col1 FROM table1
    UNION
    SELECT col1 FROM table2
    (I imagine the insert statement would go here)
END //
DELIMITER ;

简而言之,数据进入表1,触发器在insert上启动以获取表1 Col 1和表2 Col 1中的唯一值以尝试获取所有唯一值,然后我想将唯一值插入表中2 Col 1,但其中一些独特的值可能已经存在。

1 个答案:

答案 0 :(得分:2)

假设table2被定义为

CREATE TABLE table2 (col1 ..., PRIMARY KEY(col1));

你可以这样做:

DELIMITER // 
CREATE TRIGGER testdb 
AFTER INSERT ON testdb.table1
FOR EACH ROW
BEGIN    
    INSERT IGNORE INTO table2 SET col1 = NEW.col1;
END //
DELIMITER ;