Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 合并2个不同的结构表并删除重复项_Mysql_Sql - Fatal编程技术网

Mysql 合并2个不同的结构表并删除重复项

Mysql 合并2个不同的结构表并删除重复项,mysql,sql,Mysql,Sql,我有两个不同的表employee and salaries工资表上有多个重复id我的问题是如何组合employee and salaries表并删除其重复项,但我希望显示该员工的最高工资 员工表 工资表 不确定你想要什么 SELECT MAX(SALARY) FROM EMPLOYEE LEFT JOIN SALARY ON EMPLOYEE.ID=SALARY.ID GROUP BY EMPLOYEE.ID 不知道你想要什么 SELECT MAX(SALARY) FROM EMPLOYEE

我有两个不同的表employee and salaries工资表上有多个重复id我的问题是如何组合employee and salaries表并删除其重复项,但我希望显示该员工的最高工资

员工表

工资表
不确定你想要什么

SELECT MAX(SALARY) FROM EMPLOYEE LEFT JOIN SALARY ON EMPLOYEE.ID=SALARY.ID GROUP BY EMPLOYEE.ID

不知道你想要什么

SELECT MAX(SALARY) FROM EMPLOYEE LEFT JOIN SALARY ON EMPLOYEE.ID=SALARY.ID GROUP BY EMPLOYEE.ID

你需要这样的东西。我创建了一个带有必要专栏的小提琴演示

select e.*, s.salary from
employees e
inner join
(
select emp_no,max(salary) as salary from salaries
group by emp_no
) s
on e.emp_no=s.emp_no
请看这里的小提琴演示


你需要这样的东西。我创建了一个带有必要专栏的小提琴演示

select e.*, s.salary from
employees e
inner join
(
select emp_no,max(salary) as salary from salaries
group by emp_no
) s
on e.emp_no=s.emp_no
请看这里的小提琴演示


根据
工资表(
自_日期
&
至_日期
)的定义,这是一个。您的数据可能如下所示:

Emp_no  salary   from_date     to_date
  22     14000  2007-01-01  2008-03-31 -- or 2008-04-01
  22     16000  2008-04-01  2010-12-31 -- or 2011-01-01
  22     18000  2011-01-01  9999-12-31 -- or NULL
在这种情况下,您不想要
MAX
工资,而是想要当前/最新工资

在SCD中,截止日期通常设置为最大日期,如
9999-12-31
3999-12-31
NULL
。要获得当前薪资,请使用以下条件:

WHERE to_date IS NULL 
or
WHERE to_date = DATE '9999-12-31' -- or whatever your max date is
or 
WHERE CURRENT_DATE BETWEEN from_date AND to_date
要获得任何时间点的工资:

WHERE whatever_date_you_want BETWEEN from_date AND to_date

根据
工资
表(
自日期
&
至日期
)的定义,它是一个。您的数据可能如下所示:

Emp_no  salary   from_date     to_date
  22     14000  2007-01-01  2008-03-31 -- or 2008-04-01
  22     16000  2008-04-01  2010-12-31 -- or 2011-01-01
  22     18000  2011-01-01  9999-12-31 -- or NULL
在这种情况下,您不想要
MAX
工资,而是想要当前/最新工资

在SCD中,截止日期通常设置为最大日期,如
9999-12-31
3999-12-31
NULL
。要获得当前薪资,请使用以下条件:

WHERE to_date IS NULL 
or
WHERE to_date = DATE '9999-12-31' -- or whatever your max date is
or 
WHERE CURRENT_DATE BETWEEN from_date AND to_date
要获得任何时间点的工资:

WHERE whatever_date_you_want BETWEEN from_date AND to_date

请给出表格结构和样本数据。如果您能在中重新创建表会更好。我已经上传了表结构的图像。请给出表结构和示例数据。如果你能在我上传的表格结构图片中重新创建表格会更好