mysql - 内连接、更新、选择重复条目

标签 mysql sql

我在 sqlplus 中有两个表,Employees,Assignment。

  • 员工(EmpIDEmpnameEmpSalary)
  • 作业(EmpID作业#工作时间)。

一些 EmpID 在分配表中重复,表明员工从事多个项目。

我的问题是:

  1. 该查询仅显示参与多个项目的员工。

  2. 如果工作时间超过 15,则在员工表中将工资增加 1000。

这些问题让我伤透了脑筋,任何帮助将不胜感激。

最佳答案

参与多个项目的员工:

select e.EmpID, e.EmpName
from Employees e
join Assignment a on e.EmpID = a.EmpID
group by e.EmpID, e.EmpName
having COUNT(*) > 1

如果工作时间超过 15 小时,则加薪 1000:

update Employees
set EmpSalary = EmpSalary + 1000
from (select e.EmpID, e.EmpName, SUM(a.WorkedHours) TotalHours 
      from Employees e
      join Assignment a on e.EmpID = a.EmpID
      group by e.EmpID, e.EmpName) g      
where g.EmpID = Employees.EmpID and g.TotalHours > 15

关于mysql - 内连接、更新、选择重复条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35592566/

相关文章:

c# - 如何从 C# 中将 MySQL 数据库函数作为查询参数传递

java - 与 Hibernate 额外列查询的多对多关系

sql - 如何在Delphi中创建类似item1、item2、item3格式的SQL查询?

sql - 计算过去 X 个月的移动总和(或 SUM OVER),但行数不规则

php - 如何通过 unixstamp 获取过去 24 小时的行

sql - 将逗号分隔的列数据拆分为多列(可变大小)

sql - 仅在创建时不允许空值,但在修改表时允许空值?

mysql - 为什么mysql允许删除外键引用的记录?

python - 保存后更新FK模型DateField

php - mysql表显示小数点后两位数