【问题标题】:SQL: Move column data to other table in same relationSQL:将列数据移动到同一关系中的其他表
【发布时间】:2013-06-13 05:29:01
【问题描述】:

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

表 1:用户 - 尝试读取的列 + 移动 = oauth_access_key 和 oauth_access_secret

表 2:account_users - 目标列:oauth_token_key、oauth_token_secret

这些表之间的关系键是“user_id”。

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

提前致谢。

【问题讨论】:

  • 使用加入或插入/选择更新

标签: mysql sql


【解决方案1】:
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;

您可以在MySQL Update 上使用JOIN 语法。

【讨论】:

  • 这不是只是将表格行复制到新位置,但仍将前一列保留在同一个原始表格中吗?
【解决方案2】:

我认为您正在寻找的答案是

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`);

编辑

我假设您想要移动数据,如“将其放在尚未到达的地方”。

EDIT2

这是关于VALUES()的文档:http://dev.mysql.com/doc/refman/5.0/en/miscellaneous-functions.html#function_values

【讨论】:

  • 我认为这可能可行 :) 我目前正在将我的数据库导入测试环境,所以我不会搞砸。我会在几分钟内告诉你它是否有效。感谢您及时的回复! #edit:实际上,account_users 中的记录已经存在。只有数据需要去的列还没有数据。这样的东西有用吗?:
  • 如果您想多次使用此查询,您可能需要扩展查询以更新现有行的值。请参阅@PtPazuzu 他关于如何做到这一点的回答。 ;)
  • UPDATE account_users,users SET account_users.oauth_token_key=users.oauth_access_key WHERE users.id=@9876543332@。跨度>
  • 是的,那部分。我可能会更新我的答案以使其完整。不过不要忘记桌子的“秘密”部分;)
  • 我更新了我的答案。最终的 SQL 插入不存在的行并更新现有的行。
【解决方案3】:

由于标题是 SQL,而不是特定于 DB...对于那些在搜索 Postgres 时偶然发现此问题的人来说,这是一个解决方案:

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;

【讨论】:

    【解决方案4】:
    INSERT INTO account_users (user_id, oauth_token_secret) 
    SELECT users.user_id, users.oauth_access_secret FROM users 
    ON DUPLICATE KEY UPDATE account_users.oauth_token_secret = users.oauth_access_secret
    

    【讨论】:

      猜你喜欢
      • 2023-03-22
      • 1970-01-01
      • 1970-01-01
      • 2021-10-20
      • 2022-08-17
      • 2019-10-11
      • 1970-01-01
      • 2021-07-15
      • 1970-01-01
      相关资源
      最近更新 更多