mysql - SQL 从另一个表中的另一列更新一列

标签 mysql join sql-update

我在此之前阅读了各种帖子。但他们似乎都不适合我。

如标题所示,我正在尝试从另一个表中的列更新一个列。我不记得以前遇到过这个问题..

1. 表:user_settings.contact_id,我想用contacts.id更新 where (user_settings.account_id == contacts_account_id)

2. 以前,联系人通过 account_id 链接到用户帐户。但是,现在我们想通过 contacts.id

将联系人链接到 user_settings

以下是我尝试过的一些示例,但都没有奏效。我会对 A.) 为什么它们不起作用和 B.) 我应该怎么做感兴趣。

示例 A:

UPDATE user_settings
SET user_settings.contact_id = contacts.id 
FROM user_settings 
INNER JOIN contacts ON user_settings.account_id = contacts.account_id

示例 B:

UPDATE (SELECT A.contact_id id1, B.id id2
  FROM user_settings A, contacts B
  WHERE user_settings.account_id = contacts.account_id)
SET id1 = id2

示例 C:

UPDATE user_settings
SET user_settings.contact_id = (SELECT id
  FROM contacts
  WHERE (user_settings.account_id = contacts.account_id)
WHERE EXISTS ( user_settings.account_id = contacts.account_id )

我觉得我的大脑刚刚关闭了我,如果有任何颠簸可以重新启动它,我将不胜感激。谢谢:)

最佳答案

根据 MySQL 文档,要进行跨表更新,您不能使用连接(就像在其他数据库中一样),而是使用 where 子句:

http://dev.mysql.com/doc/refman/5.0/en/update.html

我认为这样的事情应该可行:

UPDATE User_Settings, Contacts
    SET User_Settings.Contact_ID = Contacts.ID
    WHERE User_Settings.Account_ID = Contacts.Account_ID

关于mysql - SQL 从另一个表中的另一列更新一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3818512/

相关文章:

postgresql - 更新后使用触发器更新表

mysql - 如何在 mysql 查询中做这个简单的数学运算?

MySQL 如果不存在则从一列插入到另一列

mysql - 如何提高 mysql 查询执行性能

mysql - 删除左表上的重复项,同时保留右表上的重复项 SELECT JOIN

mysql - 除了循环之外,我如何加速 mysql 更新

甲骨文 : update column depending on column from another table

php - 如何用PHP只显示数据库列的一个字段

php - 带有数据库选择的 CodeIgniter :

Javascript 如何将单独的字符连接成数组中的一个字符串?