我有一个组表(“程序员”,“设计师”,“ 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/