SQL语法错误分析及修正:SELECT d.`dept_no`,d.`emp_no`,s.`salary` FROM salaries s WHERE d.`dept_no` IN ( SELECT d.`dept_no` JOIN dept_emp d ON d.`emp_no`=s.`emp_no` ORDER BY s.`salary` ASC GROUP BY d.`dept_no`,d.`emp_no` )
这段SQL语法有以下问题:
- 子查询中的JOIN语句应该在FROM子句中使用,并且应该使用JOIN条件连接不同的表。在这种情况下,应该将dept_emp表和salaries表连接起来。
- 子查询中的ORDER BY子句应该放在GROUP BY子句之后。
- 子查询中的GROUP BY子句应该包含d.
dept_no和d.emp_no两个字段,以便对这两个字段进行分组。 - 子查询应该返回一个结果集作为IN操作符的参数,而不是直接返回一个字段。
以下是修正后的SQL语句:
SELECT d.`dept_no`, d.`emp_no`, s.`salary`
FROM dept_emp d
JOIN salaries s ON d.`emp_no` = s.`emp_no`
WHERE d.`dept_no` IN (
SELECT d.`dept_no`
FROM dept_emp d
JOIN salaries s ON d.`emp_no` = s.`emp_no`
GROUP BY d.`dept_no`, d.`emp_no`
ORDER BY s.`salary` ASC
)
原文地址: https://www.cveoy.top/t/topic/pbKE 著作权归作者所有。请勿转载和采集!