MySQL/MariaDB:这是插入唯一值和 return 非唯一值的最有效方法吗?

MySQL/MariaDB: Is this the most efficient way to insert unique values and return nonunique values?

我在 PSQL 中有一个语句做得很好(基于 线程的回答) 但我一直试图在 MySQL 中重新创建相同的语句,这很困难。我目前的解决方法很丑陋:

    CREATE TEMPORARY TABLE potential_duplicates (
        id VARCHAR(64)
        content TEXT,
    
    ) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
    INSERT INTO potential_duplicates(id, content) VALUES ('1', 'some content'), ('2', 'some more content');
    SELECT id, content FROM potential_duplicates WHERE id IN (SELECT id FROM main_table);
    INSERT INTO main_table(id, content)
       SELECT id, content FROM potential_duplicates WHERE id NOT IN (SELECT id FROM main_table);

这个查询会被经常使用,我觉得做一个临时的 table 每个查询都是低效的。最初我试图找到一种使用 INSERT ON DUPLICATE 功能的方法。如果我只是插入而不是其他任何东西,它会工作得很好,但我最后需要 return 重复值。

假设 id 是一个主键(或至少是唯一的),您可以使用 INSERT IGNORE 来避免重复,并使用 RETURNING(从 MariaDB 10.5 开始可用)到 return 插入的 id 值:

INSERT IGNORE main_content(id, content) 
VALUES ('2', 'some content'), ('5', 'some more content')
RETURNING id

Demo on dbfiddle