MySQL 将数据从一个表移动到另一个表,匹配 ID

标签 mysql sql

我有两个 MySQL 表,其中包含以下列:

tweets:
-------------------------------------
id text        from_user_id from_user
-------------------------------------
1  Cool tweet! 13295354     tradeny
2  Tweeeeeeeet 43232544     bolleke
3  Yet another 13295354     tradeny
4  Something.. 53546443     janusz4

users:
-------------------------------------
id from_user num_tweets from_user_id
-------------------------------------
1  tradeny   2235
2  bolleke   432
3  janusz4   5354

我现在想要标准化 tweets 表,将 tweets.from_user 替换为与 users.id 匹配的整数。其次,我要填写相应的users.from_user_id,最后,我要删除tweets.from_user_id,这样最终结果如下:

tweets:
------------------------
id text        from_user
------------------------
1  Cool tweet!     1
2  Tweeeeeeeet     2
3  Yet another     1
4  Something..     3

users:
-------------------------------------
id from_user num_tweets from_user_id
-------------------------------------
1  tradeny   2235       13295354
2  bolleke   432        43232544
3  janusz4   5354       53546443

我的问题是是否有人可以帮助我对此提出正确的查询。我只走了这么远:

UPDATE tweets SET from_user =
  (SELECT id FROM users WHERE from_user = tweets.from_user)
WHERE...

UPDATE users SET from_user_id =
  (SELECT from_user_id FROM tweets WHERE from_user = tweets.from_user)
WHERE...

ALTER TABLE tweets DROP from_user_id

任何帮助将不胜感激:-)

最佳答案

示例工作:

推文表

https://data.stackexchange.com/stackoverflow/s/2144/mysql-move-data-from-one-table-to-another-matching-ids

用户表

https://data.stackexchange.com/stackoverflow/qe/2145/mysql-move-data-from-one-table-to-another-matching-ids

UPDATE users
SET users.from_user_id = tweets.from_user_id
FROM users
LEFT JOIN tweets ON users.from_user = tweets.from_user;

UPDATE tweets
SET tweets.from_user = users.id
FROM tweets
LEFT JOIN users ON tweets.from_user = users.from_user;

ALTER TABLE tweets DROP COLUMN from_user_id;
ALTER TABLE tweets ALTER COLUMN from_user int;

##可能的 MySQL 查询## 未经测试

UPDATE users, tweets
SET users.from_user_id = tweets.from_user_id
WHERE users.from_user = tweets.from_user;

UPDATE tweets, users
SET tweets.from_user = users.id
WHERE tweets.from_user = users.from_user;

ALTER TABLE tweets DROP COLUMN from_user_id;
ALTER TABLE tweets CHANGE COLUMN from_user from_user int;

关于MySQL 将数据从一个表移动到另一个表,匹配 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8224450/

相关文章:

mysql - 设计具有多种变体产品的数据库的最佳方法是什么?

php - Docker 镜像不会连接到 MySQL Workbench

mysql - 如果关系存在或不存在,请选择 TRUE 或 FALSE

mysql - 与上月相比的平均值

mysql - 在字符之前查找唯一值的计数

PHP 查询还显示 ID 75 的结果

mysql - sql 按列存储数据

mysql - 为什么此查询返回空行

MySQL:如何加速查询获取大量数据并使用 LIKE

php - 如何在 Joomla 数据库/Seblod 中选择(连接)多个表