0

私は2つのテーブルを持っています。2 つのサイトからのユーザー情報があります
p_users
p_users2
。最初のユーザーは 3726 人、2 番目のユーザーは 13717 人です。

の一部のユーザーp_users2は にいp_usersます。この 2 つのテーブルを 1 つの大きなテーブルにマージしたいのですが、同じユーザー名の行を 2 倍にすることはできません。

これどうやってするの?私はこのようなことを試しました:

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 を実行します...参照:

2 つの MySQL テーブルをマージするにはどうすればよいですか?

于 2010-04-19T16:46:11.940 に答える
1

それらを 2 つの別個のステートメントとして実行します。最初に重複を削除します:

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

次に、SELECTステートメントで INSERT を使用します。

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

Try this

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

最初のテーブルに一致する学生がいない場合にのみ、2 番目のテーブルからユーザーを挿入します。

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 に答える