【问题标题】:MySQL replace ids with names from other table [duplicate]MySQL用其他表中的名称替换ID [重复]
【发布时间】:2012-11-13 00:41:11
【问题描述】:

我正在使用

SELECT m.id, r.username AS `from`, s.username AS `to`, m.message
FROM msgs m
INNER JOIN usrs r ON r.user_id = m.from
INNER JOIN usrs s ON s.user_id = m.to;

用消息的'from'和'to'列中的用户名替换用户ID,然后将其输出到带有mysql usrmsgs output.txt的文件

我想将 msgs 表本身的“from”和“to”中的用户 ID 替换为来自 usrs 的相应用户名。最好的方法是什么?

【问题讨论】:

标签: mysql join replace userid


【解决方案1】:
alter table msgs
    add column from_name varchar(<size>),
    add column to_name varchar(<size>);

update msgs m 
join usrs r ON r.user_id = m.from
join usrs s ON s.user_id = m.to
SET m.from_name = r.username, m.to_name = s.username;

alter table msgs drop column from, drop column to;

【讨论】:

  • 谢谢!但是,当删除列 fromto 需要反引号时,这很有效。我希望我可以在不添加新列的情况下做到这一点。无论如何,我可能只是保留旧的 from 和 to 列。
  • 我假设旧列是整数,而不是字符串。
  • 是的,我应该说明列类型。 fromto 是 varchar(25),user_id 是 int(10),用户名是 varchar(50)
  • 所以你至少需要将fromto的大小修改为varchar(50)。然后,您可以分配给相同的列,而不是添加新列。
猜你喜欢
  • 1970-01-01
  • 2017-11-14
  • 1970-01-01
  • 2017-09-17
  • 1970-01-01
  • 1970-01-01
  • 2014-02-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多