我有一个数据库,但为了优化我重建了它。
在这里:
用户
(P) user_id
pseudo
图片
(P) image_id
path
标签
(P) tag_id
#image_id
#user_id (INT)
tag
旧的表格标签是这样的:
旧标签
(P) tag_id
#image_id
author (VARCHAR)
tag
我的问题是:old_tags 充满了数据(大约 6000 行)而标签是空的,我想将所有数据从 old_tags 转换为我的新标签表格式。但是列不同,author 是 VARCHAR
和 user_id 是 INT
。但是old_tags
和users
之间是有联系的,因为作者指的是伪。
我想要这样的东西:
UPDATE tags
SET user_id = (SELECT user_id FROM users, old_tags WHERE users.pseudo = old_tags.author)
我不知道是否清楚,我希望新标签表中的所有内容都相同,但我想要相应的“user_id”而不是“作者”。 我正在使用 phpmyadmin,所以如果可能的话建议一些我可以直接在其中运行的东西。 提前致谢!
最佳答案
您必须执行 INSERT
才能向表中添加新行:
INSERT INTO tags (tag_id, image_id, user_id, tag)
SELECT ot.tag_id, ot.image_id, u.user_id, ot.tag
FROM old_tags ot
JOIN users u ON ot.author = u.pseudo
关于mysql - 如何通过从另一个表加入来更新 mysql 中的列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43255834/