这段代码报错的原因可能是子查询返回的结果集中有多个列,而外层的 IN 操作符只能接受单个列作为参数。

从代码中可以看到子查询中的 SELECT 语句返回了两个列,即'd.dept_no' 和 'd.emp_no'。而外层的 IN 操作符只能接受单个列作为参数,因此会报错。

如果你只需要使用 'd.dept_no' 作为条件进行查询,可以将子查询的 SELECT 语句中的 'd.emp_no' 移除,只保留 'd.dept_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`
    ORDER BY s.`salary` ASC
    LIMIT 0,1
)

这样修改后,子查询只返回了 'd.dept_no' 一列,不再报错。

SQL 子查询错误:IN 操作符只能接受单个列

原文地址: https://www.cveoy.top/t/topic/pbKJ 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录