我有一个组表(“程序员”,“设计师”,“ HR”等)和相应的ID。
我也有一张员工表。每个员工都属于一个组。
在雇员表中,我有一个下限字段-指示他们所在的楼层。

预计两个雇员表组表在今年都将保持不变。

我想向组表添加一个名为“ constant_floor”的新字段。如果组中的所有员工都在同一楼层,则为楼层数。否则将为0。

关于如何有效实现这一目标的任何想法?我的雇员表和10,000个不同的组中大约有50,000行。

最佳答案

该查询应该完成您想要实现的目标:

  update
    groups g
      left join
    (select floor_no, group_id, count(distinct floor_no)
       from employees group by group_id having count(distinct floor_no) = 1) temp
      on g.id = temp.group_id
  set g.constant_floor = ifnull(temp.floor_no, 0);


我假设您在index中的group_id上有一个employees table(也许通过foreign_key关系)。如果您没有,我建议创建一个。这样,update查询应该不会花费很多时间。

另外,也许您可​​以在index中的floor_no上创建一个临时employees table,并在update之后将其删除。

sqlFiddle在这里:http://sqlfiddle.com/#!2/c9866/1

关于mysql - 组及其所在的楼层-MySQL加入,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14185721/

10-09 22:15