使用MySQL中的另一个表查找和替换表数据

时间:2014-01-28 09:46:53

标签: mysql sql join sql-update inner-join

在我的MySQL数据库中,我有两个表,itemusers。在项目表中,我有两列名为created_bycreated_by_alias。由别名列创建的列完全填充了名称,但created_by列为空。我的下一个表是users表。其中包含idname列。

我想知道是否可以使用MySQL将项目表中的created_by_aliasname表中的users列进行匹配,然后获取用户并将其放入created_by列。

我在考虑某种JOIN功能。任何想法都将不胜感激。

4 个答案:

答案 0 :(得分:2)

实际上,你确实是在正确的方向 - MySQL有update join语法:

UPDATE items
JOIN   users ON users.name = items.created_by_alias
SET    created_by = items.id

答案 1 :(得分:0)

这应该有效:

UPDATE items
SET created_by = (SELECT u.id 
                  FROM users u
                  WHERE u.name = items.created_by_alias)

答案 2 :(得分:0)

试试这个:

UPDATE item i 
INNER JOIN users u ON i.created_by_alias = u.name
SET i.created_by = u.id;

答案 3 :(得分:0)

以下内容适用于MySQL

UPDATE item 
       INNER JOIN users 
               ON item.created_by_alias = users.name 
SET    item.created_by = users.id 

当然,您还应该检查所有用户名是否都是唯一的......