如何解决pgAdmin运行SQL子查询时出现的语法错误
报错原因
SQL语法错误来自JOIN关联的ON子句位置错误:ON作为两表关联条件的定义子句,必须紧跟在JOIN的目标表之后,不能放在WHERE筛选子句后面,违反书写顺序就会直接抛出语法异常。
修正后代码
SELECT D.department_name, E.FIRST_NAME FROM DEPARTMENTS D JOIN EMPLOYEES E ON D.DEPARTMENT_ID = E.DEPARTMENT_ID WHERE E.SALARY = ( SELECT MIN(SALARY) FROM EMPLOYEES );
补充说明
- 修正后的语句可以正常返回全公司所有领取最低工资的员工姓名、对应所属部门名称,支持存在多名最低工资员工的场景,不会漏返回数据。
- SQL书写需要严格遵循固定子句顺序:
SELECT→FROM→JOIN→ON→WHERE→GROUP BY→HAVING→ORDER BY→LIMIT,子句错位是这类语法报错的最常见诱因。
如果后续需要统计每个部门内部的最低工资对应员工,只需要将子查询调整为按部门ID关联匹配当前部门的最低薪资即可。
内容的提问来源于stack exchange,提问作者Sam
相关产品推荐
相关产品推荐

