Mysql 有人能帮我查一下哪里做错了吗?

Mysql 有人能帮我查一下哪里做错了吗?,mysql,Mysql,大家好,我是sql新手,现在正在网站上做练习(类似于leetcode) 关于一个问题,上面是我的代码,当我测试它时,它运行良好。 然而,网站上说我的代码是错误的: select s1.emp_no as emp_no,(s1.salary - e1.salary) as growth from ( select salaries.emp_no,salary from salaries where from_date in (select to_date from salaries) and to

大家好,我是sql新手,现在正在网站上做练习(类似于leetcode) 关于一个问题,上面是我的代码,当我测试它时,它运行良好。 然而,网站上说我的代码是错误的:

select s1.emp_no as emp_no,(s1.salary - e1.salary) as growth from (
select salaries.emp_no,salary from salaries
where from_date in (select to_date from salaries)
and to_date = '9999-01-01') as s1
inner join (
select e.emp_no,s.salary from employees as e
left join salaries as s
where e.hire_date = s.from_date) as e1
on s1.emp_no = e1.emp_no
order by growth
我不知道我哪里做错了,谁能帮帮我吗

提前谢谢

注:如果有人想自己测试,下表如下:

SQL_ERROR_INFO: "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'where e.hire_date = s.from_date) as e1\non s1.emp_no = e1.emp_no\norder by growth' at line 8"

LEFT JOIN
需要一个连接条件,即使用
ON
USING
子句。
WHERE
子句可能满足相同的逻辑,但不满足所需的语法

错:

drop table if exists  `employees` ; 
drop table if exists  `salaries` ;
CREATE TABLE `employees` (
`emp_no` int(11) NOT NULL,
`birth_date` date NOT NULL,
`first_name` varchar(14) NOT NULL,
`last_name` varchar(16) NOT NULL,
`gender` char(1) NOT NULL,
`hire_date` date NOT NULL,
PRIMARY KEY (`emp_no`));
CREATE TABLE `salaries` (
`emp_no` int(11) NOT NULL,
`salary` int(11) NOT NULL,
`from_date` date NOT NULL,
`to_date` date NOT NULL,
PRIMARY KEY (`emp_no`,`from_date`));
INSERT INTO employees VALUES(10001,'1953-09-02','Georgi','Facello','M','2001-06-22');
INSERT INTO employees VALUES(10002,'1964-06-02','Bezalel','Simmel','F','1999-08-03');
INSERT INTO salaries VALUES(10001,85097,'2001-06-22','2002-06-22');
INSERT INTO salaries VALUES(10001,88958,'2002-06-22','9999-01-01');
INSERT INTO salaries VALUES(10002,72527,'1999-08-03','2000-08-02');
INSERT INTO salaries VALUES(10002,72527,'2000-08-02','2001-08-02');
对:

select e.emp_no,s.salary from employees as e
left join salaries as s
where e.hire_date = s.from_date

有关
JOIN
语法的完整参考文档,请参阅。

它是
左JOIN。。。在…上WHERE
所以请注意订单。@tadman yea,我需要将“WHERE”改为“on”,谢谢您的帮助:)谢谢!不知道为什么我在上测试时它工作得很好:(他们必须有一个不同于MySQL的SQL解析器实现。
select e.emp_no,s.salary from employees as e
left join salaries as s
  on e.hire_date = s.from_date