1

这是我的第一个 SO 问题 :)

我正在尝试将临时用户“合并”到现有用户,以及他们所有相关的对象关系——一个是“post_relationships”

问题是..如果两个用户都与同一个帖子有关系,一个简单的 INSERT INTO ... SELECT 语句会产生一个 DUPLICATE KEY 错误..

另外,如果其中一个用户具有更高的权限级别,我想保留两个用户的最高权限级别。

我已经构建了一个有效的查询,但我想知道是否有更好的方法来完成这个。我担心随着表的增长,这个查询不会那么有效。

INSERT INTO post_relationships
            (id_user, id_post, access, label, time_created)
        SELECT 
            old.id_user,
            new.id_post, 
            new.access, 
            new.label, 
            new.time_created 
        FROM 
            post_relationships AS old,
            post_relationships AS new
        WHERE 
            old.id_user = '$id_old' AND 
            new.id_user = '$id_new' AND
            new.id_post = old.id_post AND 
            new.access > old.access
        ON DUPLICATE KEY UPDATE
            access= new.access,
            label = new.label

当条件出现时,它总是强制更新

new.access > old.access

这让我担心这里有一些矫枉过正的代码。有什么建议么?

谢谢!

4

0 回答 0