我有两个 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
任何帮助将不胜感激:-)
最佳答案
示例工作:
推文表
用户表
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/