如何在mysql中选择同一个表中的更新?

时间:2016-12-02 09:43:39

标签: mysql sql

我有一张名为db.yourcollection.find({ $where: function() { return .... } }, ...); 的表格。现在我想更新薪水低于50000 / - 的经理薪水。

emp(eid, ename, sal, mgr)

我该怎么办?

3 个答案:

答案 0 :(得分:1)

  

我想更新薪水低于50000 /

的经理薪水

为什么需要SELECT BTW。只需按

执行UPDATE操作即可
update emp
set sal = 70000
where sal < 50000;

答案 1 :(得分:0)

你可以使用子查询来更新依赖于同一个表的数据,即:

UPDATE sometable set field = null 
WHERE sometable.id in (SELECT * FROM (SELECT id from sometable) as a);

答案 2 :(得分:0)

在MySQL中,我更喜欢使用JOIN这种类型的更新来使用双重嵌套的IN表达式。 JOIN允许优化器使用可用索引:

UPDATE emp mgr INNER JOIN
       emp e
       ON e.empno = mgr.mgr
    SET mgr.sal = mgr.sal + 5000
    WHERE mgr.sal < 50000;