创建复杂的MySQL更新查询

时间:2015-06-17 15:34:21

标签: mysql sql-update

我正在尝试创建一个UPDATE查询,该查询将使用另一个用户的NameID字段值替换名为TimeStamps的表上的id字段表名为Names。这是一些示例数据。

名称表

id:1
name:John
password:1234

TimeStamps表

id:1
name:**John**
timestamp:01/01/2000 12:00:00

我想将Name表中的TimeStamps字段替换为id表中相应的Names值。我不完全确定如何编写查询,但我知道它是从这样的东西开始的。

UPDATE TimeStamps
    SET NameID=(NamesTableReference)
    WHERE NameID=(TimeStampsTableReference);

这样我就可以开始针对用户id而不是用户的Name运行查询。我们有多个具有相同名称的用户,但由于它吸引了多个用户,因此无法提取正确的数据。我可以手动更新数据,但表中有几十万行,这将花费太多时间。任何人都可以在下面的查询中阐明我需要添加/更改的内容吗?谢谢!

2 个答案:

答案 0 :(得分:1)

我想你只想要join

update timestamps t join
       names n
       on t.id = n.id
    set t.name = n.name;

但是,update不是必需的。您有id连接两个表。只需在使用timestamps时使用它。也就是说,使用join查找name而不是将其存储在两个位置 - 并冒着与id相关联的名称在两者中以某种方式结束的风险表。

答案 1 :(得分:0)

看起来这个查询就行了。

UPDATE TimeStamps t, Names n
SET t.NameID = n.id
WHERE t.NameID = n.Name

感谢大家的意见和帮助!希望这可以在将来帮助别人!