0

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

中的一些用户p_users2p_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

4 回答 4

3

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

如何合并两个 MySQL 表?

于 2010-04-19T16:46:11.940 回答
1

将它们作为两个单独的语句进行。首先删除重复项:

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

然后将INSERT 与 SELECT语句一起使用:

INSERT INTO P_USERS (FIELD1, FIELD2, FIELD3) SELECT FIELD1, FIELD2, FIELD3 FROM P_USERS2
于 2010-04-19T16:45:02.993 回答
0

试试这个

DELETE p2 FROM p_pusers2 AS P2
INNER JOIN p_users p1
ON p1.username=p2.username
于 2010-04-19T16:47:33.637 回答
0

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

INSERT INTO p_users
SELECT * FROM p_users2 p2
WHERE NOT EXISTS (
  SELECT * FROM p_users p1
  WHERE p1.id = p2.id
)
于 2010-04-19T16:52:04.170 回答