SQL更新已修改表中的列

时间:2013-06-07 12:44:41

标签: mysql

我是一个相当称职的SQL程序员,但我的技能仍然在简单的INSERT,SELECT,UPDATE语句的领域,偶尔会出现LIKE等。我目前要做的是相当复杂。这是场景。

  1. 我有三张桌子。
  2. 表1,*users*通过用户ID uid 识别用户。用户可以拥有一个或多个子帐户
  3. 表2 *accounts*为每个用户保留子帐户记录,其中包括 uid sid uid *users*表中定义的那个。
  4. 表3,*data*目前正在数据列中存储一些数据,该列与特定子帐户 sid 相关联。
  5. 我刚才意识到的是,没有特别的理由阻止用户跨子帐户使用这些数据。没问题 - 我可以改变我的数据子集搜索SQL以使用 uid 。但是,考虑到此类搜索的频率,只需坚持*data*中的 uid 列即可。

    要做到这一点,我需要编写一些智能SQL来获取*accounts*表中的uid,sid对,并使用该信息更新数据中新创建的uid列表。我不得不承认这是我对SQL的了解。

    我应该提一下,使用这些数据的系统现在已经投入生产,并且拥有数百个用户,所以选择只是表现得像他们不存在的选项是不可用的。我认为不是非常相关,但我应该提到 uid sid 是字母数字strinsg,两列都被编入索引。

    我非常感谢能够帮助它的人。

1 个答案:

答案 0 :(得分:0)

Mysql可以根据连接进行更新,并根据您的模式读取,这就是我要做的...

UPDATE accounts a, data d
set d.uid=a.uid
where a.sid=d.sid
and d.uid is NULL