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

标签 mysql sql

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

在这里:

用户

(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_tagsusers之间是有联系的,因为作者指的是伪。

我想要这样的东西:

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/

相关文章:

c# - 如何检查mysql中是否存在多个表?

sql - 如何使SQL Server 2008表的检查约束仅允许某些字符?

sql - Oracle 查询优化一个棘手的删除查询

php - 将永久数据存储在 php 文件中以减少 SQL 查询的数量是一个好习惯吗?

php - SQLSTATE[HY000] [1049] 未知数据库 'u675813745_ymeda'

mysql - Entity Framework : Add new object and link to 2nd new object via navigational property

mysql - 简单的sql连接

java - 由于基础异常 : Connection Time Out 导致通信链接失败

mysql - Rails 使用 SQL group_by

sql - Postgres 嵌套的 LEFT OUTER JOIN 在 array_agg() 中返回多个 null