mysqljoin在没有主键的情况下如何处理重复插入 - MySQL

How to use mysql join to deal with duplicate insertion when there is no primary key - MySQL

我有一个 table 看起来像下面的

CREATE TABLE `groups` (
`id_rec` INT(11) NOT NULL DEFAULT '0',
`id_group` INT(11) NOT NULL DEFAULT '0',
UNIQUE INDEX `unikum` (`id_rec`, `id_group`),
INDEX `idxgroup` (`id_group`))

没有像 table 的 id 这样的主键,我可以在其上使用 insert on duplicate key 子句。现在我正在尝试在组 table 中使用 signle MySQL 查询插入多行,但我不想插入重复行。现在,我想出的解决方案是创建并插入另一个临时 table,然后在组 table 和临时 table 上使用 join 以查找重复项或非重复项(新)记录取决于我应该使用的连接。

临时 table 看起来像下面

CREATE TEMPORARY TABLE IF NOT EXISTS $tempTable
(id INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
 group_id INT(11) NOT NULL, 
 id_rec INT(11) NOT NULL)

此时我不确定应该使用哪个连接。任何帮助将不胜感激。

ON DUPLICATE KEY UPDATE 不需要主键即可工作。您拥有的唯一索引非常好。

您也可以使用 INSERT IGNORE:

INSERT IGNORE INTO `groups` VALUES (1, 1);

如果 (1, 1) 对已经存在于您的 table 中,那么上面的语句将被简单地忽略。

Demo here