我有两张桌子。来自两个站点的用户信息:
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)
答案 0 :(得分:3)
创建一个新用户名为唯一的表,然后执行Insert Ignore ...参见:
答案 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
)