DELETING加倍用户(MySQL)

时间:2010-04-19 16:38:59

标签: mysql mysql-error-1093

我有两张桌子。来自两个站点的用户信息:
p_users
p_users2
首先是3726个用户,第二个是13717个。

p_users2中的部分用户位于p_users。我想将这两个表合并到一个大表中 - 但具有相同用户名的行不能加倍。

我该怎么做?我试过这样的事情:

DELETE FROM p_users2 WHERE user_id IN 
(
select p.user_id from p_users p
join p_users2 p2 on p.username=p2.username
)

之后我应该收到一个包含唯一用户名的表,我想将其导出并导入到第一个用户名。但是当我执行我的查询时,我收到了错误:

  

SQL错误(1093):您无法在FROM子句中为更新指定目标表'p_users2'。 (MYSQL)

4 个答案:

答案 0 :(得分:3)

创建一个新用户名为唯一的表,然后执行Insert Ignore ...参见:

How can I merge two MySQL tables?

答案 1 :(得分:1)

将它们作为两个单独的陈述。首先删除重复项:

DELETE FROM p_users2 WHERE user_id IN 
(select p.user_id from p_users p)

然后使用INSERT with SELECT声明:

INSERT INTO P_USERS (FIELD1, FIELD2, FIELD3) SELECT FIELD1, FIELD2, FIELD3 FROM P_USERS2

答案 2 :(得分:0)

试试这个

DELETE p2 FROM p_pusers2 AS P2
INNER JOIN p_users p1
ON p1.username=p2.username

答案 3 :(得分:0)

仅插入第二个表中第一个表中没有匹配学生的用户

INSERT INTO p_users
SELECT * FROM p_users2 p2
WHERE NOT EXISTS (
  SELECT * FROM p_users p1
  WHERE p1.id = p2.id
)