WHERE NOT EXIST不工作(数据重复!!)


WHERE NOT EXIST not working (Data gets duplicated!!!)

所以我将用户数据从一个表添加到另一个表中,用于Wordpress的插件

$sql = mysql_query("INSERT INTO wp_bp_xprofile_data (user_id, field_id, value)
        SELECT ID, '7', cedula
FROM employees
WHERE NOT EXISTS(SELECT * 
                 FROM wp_bp_xprofile_data
                 WHERE (ID=user_id AND
                       '7'=field_id AND
                        cedula=value
                       )
                 )

查询运行良好,但当运行第二个/第三个。。。随着时间的推移,它将我从employees表中提取的所有数据复制到xprofile中。使用"Where Not Exists",我希望每个员工数据只添加一次,如果它还不存在。

这很奇怪,而且无法真正找出问题所在,即使在对另一个表的早期查询中,它也不会复制员工,而且工作正常,在这里,我将数据从wp_users拉入wp_usermeta:

    $sql2 = mysql_query("INSERT INTO wp_usermeta (user_id, meta_key, meta_value)
        SELECT ID, 'first_name', SUBSTRING_INDEX(display_name, ' ', 1)
FROM wp_users
WHERE NOT EXISTS(SELECT * 
                 FROM wp_usermeta
                 WHERE (ID=user_id AND
                       'first_name'=meta_key AND
                       SUBSTRING_INDEX(display_name, ' ', 1)=meta_value 
                       )
                 )

在这个问题上,如果记录已经在中,它在再次运行时不会复制记录,如果有人能看到问题所在,我们将非常感谢您的帮助。

伙计们,刚刚发现,employees和wp_bp_xprofile_data表都有一个"ID"列,我在WHERE中的查询并不是特定于哪个ID限制的。现在使用:

INSERT INTO wp_bp_xprofile_data (user_id, field_id, value)
        SELECT ID, '7', cedula
FROM employees
WHERE NOT EXISTS(SELECT * 
                 FROM wp_bp_xprofile_data
                 WHERE (employees.ID=user_id AND
                       '7'=field_id AND
                        cedula=value
                       )
                 )