MySQL 从联合中插入唯一的

标签 mysql

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

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,插入时启动触发器以从表 1 第 1 列和表 2 第 1 列获取唯一值,尝试获取所有唯一值,然后我想将唯一值插入到表中2 第 1 栏,但其中一些唯一值可能已经存在。

最佳答案

假设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 ;

关于MySQL 从联合中插入唯一的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11602573/

相关文章:

php - 如何在php中动态显示博客列表

mysql - 如何在drupal 7 db_select查询中编写自定义orderby?

mysql - 使用 CONCAT 和 INNER JOIN MYSQL 选择某些结果

php - 我的 "remember me"-功能

mysql - 使用 PHP 在 MySQL 数据库中插入表情符号 - 智能手机?

php - 从mysql中的多个表中获取特定结果

python - 使用参数创建 MySQL 表时出现 TypeError

SQL查询解决方案

c# - 如何将参数传递给 MySQL OdbcCommand 并且仅当谓词匹配时如何更新?

php - Codeigniter - 主键由子表使用