我想知道是否可以将所有数据从表中的一列移动到另一个表。 这就是我想要做的事情:
表1:用户 - 试图读取的列+ move = oauth_access_key和oauth_access_secret
表2:account_users - 目标列:oauth_token_key,oauth_token_secret
这些表之间的关系键是“user_id”。
这可以在一个查询中使用吗?我知道这很容易在PHP中完成,但我想知道是否可以在纯SQL中完成。
提前致谢。
答案 0 :(得分:23)
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
语法。
答案 1 :(得分:6)
我认为您正在寻找的答案是
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`);
我假设您想要移动数据,就像'把它放在尚未存在的地方'。
以下是VALUES()
:http://dev.mysql.com/doc/refman/5.0/en/miscellaneous-functions.html#function_values
答案 2 :(得分:3)
由于标题是SQL,而不是特定于数据库...这里有一个解决方案,适合那些在搜索 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;
答案 3 :(得分:0)
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