Mysql SQL:将列数据移动到同一关系中的其他表

Mysql SQL:将列数据移动到同一关系中的其他表,mysql,sql,Mysql,Sql,我想知道是否有可能将所有数据从表中的一列移动到另一列。 以下是我想做的: 表1:用户-尝试读取+移动=oauth\u访问密钥和oauth\u访问密钥的列 表2:帐户用户-目标列:oauth\u令牌\u密钥、oauth\u令牌\u密钥 这些表之间的关系键是“用户id” 这在一个查询中可能吗?我知道这在PHP中很容易实现,但我想知道是否可以在普通SQL中实现 提前谢谢 UPDATE users, account_users SET account_users.oauth_token_key=use

我想知道是否有可能将所有数据从表中的一列移动到另一列。 以下是我想做的:

表1:用户-尝试读取+移动=oauth\u访问密钥和oauth\u访问密钥的列

表2:帐户用户-目标列:oauth\u令牌\u密钥、oauth\u令牌\u密钥

这些表之间的关系键是“用户id”

这在一个查询中可能吗?我知道这在PHP中很容易实现,但我想知道是否可以在普通SQL中实现

提前谢谢

UPDATE users, account_users 
SET account_users.oauth_token_key=users.oauth_access_key,  
    account_users.oauth_token_secret = users.oauth_access_secret
WHERE account_users.user_id=users.user_id;

您可以在上使用
JOIN
语法。

我想您要寻找的答案是

INSERT INTO `account_users` (`user_id`, `oauth_token_key`, `oauth_token_secret`)
SELECT `user_id`, `oauth_access_key`, `oauth_access_secret` FROM `user`
ON DUPLICATE KEY UPDATE 
  `oauth_token_key` = VALUES(`oauth_token_key`),
  `oauth_token_secret` = VALUES(`oauth_token_secret`);
编辑 我假设您希望移动数据,就像“将数据放在尚未移动的地方”

编辑2
以下是关于
VALUES()

的文档,因为标题是SQL,而不是特定于DB的。。。对于那些在搜索博士后时偶然发现这一点的人,这里有一个解决方案:

UPDATE account_users        
SET oauth_token_key = users.oauth_access_key,  
    oauth_token_secret = users.oauth_access_secret
FROM profiles
WHERE account_users.user_id = users.user_id;

更新w/join或insert/select我认为这可能会起作用:)我目前正在将我的数据库导入测试环境,这样我就不会把事情搞砸了。我会让你知道它是否在几分钟内奏效。谢谢你的快速回复#编辑:实际上,帐户用户中的记录已经存在。只有数据需要进入的列还没有数据。是否要执行此操作?:如果要多次使用此查询,可能需要扩展查询以更新现有行上的值。请参见@PtPazuzu关于如何做到这一点的回答更新
帐户用户
用户
设置
帐户用户
oauth\u令牌密钥
=
用户
oauth\u访问密钥
其中
用户
帐户用户
用户id
是,该部分。我可能会更新我的答案,虽然是完整的。但不要忘记桌子上的“秘密”部分;)我更新了我的答案。最后一个SQL插入不存在的行并更新现有的行。这不只是将表行复制到新位置,但仍将上一列保留在同一原始表中吗?
UPDATE account_users        
SET oauth_token_key = users.oauth_access_key,  
    oauth_token_secret = users.oauth_access_secret
FROM profiles
WHERE account_users.user_id = users.user_id;