如何通过从另一个表加入来更新mysql中的列?

时间:2017-04-06 12:54:34

标签: mysql sql

我有一个数据库,但我重建了它以进行优化。

这是:

用户

(P) user_id
pseudo

图片

(P) image_id
path

代码

(P) tag_id
#image_id
#user_id (INT)
tag

较旧的表格标签如下:

old_tags

(P) tag_id
#image_id
author (VARCHAR)
tag

我的问题是:old_tags充满了数据(大约6000行),标签是空的,我想将所有数据从old_tags转换为我的新标签表格式。但该列不同,作者是VARCHAR,user_id是INT。但是old_tagsusers之间存在链接,因为作者引用了伪。

我想要类似的东西:

UPDATE tags
SET user_id = (SELECT user_id FROM users, old_tags WHERE users.pseudo = old_tags.author)

我不知道是否清楚,我希望新标签表中的所有内容都相同,而不是“作者”,我想要相应的“user_id”。 我正在使用phpmyadmin,所以如果可能的话建议我可以直接在其中运行。 Thx提前!

1 个答案:

答案 0 :(得分:0)

您必须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