【问题标题】:nested select is not accepting more than one column嵌套选择不接受超过一列
【发布时间】:2014-05-07 15:38:25
【问题描述】:

我有几张这样的表:

部门

dept_no char(4) 主键

dept_name varchar(40) 唯一

dept_emp

emp_no int 主键

dept_no char(4) 主键

from_date 日期到日期

部门经理

dept_no char(4) 主键

emp_no int 主键

from_date 日期

to_date 日期

员工

emp_no int 主键

first_name varchar(14)

last_name varchar(16)

现在我有:

select employees.emp_no, employees.first_name,employees.last_name,
departments.dept_name, (select employees.first_name 
from employees where dept_manager.emp_no =employees.emp_no )
from employees,dept_emp ,departments,dept_manager
where (employees.emp_no=dept_emp.emp_no) AND 
(dept_emp.dept_no = departments.dept_no)
LIMIT 300;

第二个选择是打印每个员工的经理姓名。

但是当我尝试打印经理的姓氏时,它会引发错误。

select employees.emp_no, employees.first_name,employees.last_name,
    departments.dept_name, (select employees.first_name, **employess.last_name**
    from employees where dept_manager.emp_no =employees.emp_no )
    from employees,dept_emp ,departments,dept_manager
    where (employees.emp_no=dept_emp.emp_no) AND 
    (dept_emp.dept_no = departments.dept_no)
    LIMIT 300;

错误 1241 (21000):操作数应包含 1 列

为什么会出现这个错误?

【问题讨论】:

  • 代替子查询尝试加入员工和子查询的记录集。
  • @Trinity:我无法用连接来编写它。只是一个初学者。如果您发布查询,将对我有所帮助。

标签: mysql


【解决方案1】:

这不是子查询的工作方式,您应该为每个查询选择一列以用作一列

select employees.emp_no, employees.first_name,employees.last_name,
departments.dept_name, (select employees.first_name
from employees where dept_manager.emp_no =employees.emp_no ) e_first_name,
(select employess.last_name
from employees where dept_manager.emp_no =employees.emp_no ) e_last_name
from employees,dept_emp ,departments,dept_manager
where (employees.emp_no=dept_emp.emp_no) AND 
(dept_emp.dept_no = departments.dept_no)
LIMIT 300;

或者您可以使用CONCAT() 来合并两列中的名称,例如

select CONCAT(employees.first_name,'  ',employess.last_name) full_name

【讨论】:

    【解决方案2】:

    您正在尝试将子查询中的 2 列放在 headquery 的 1 列中。您应该进行两个子选择,每列一个。

    【讨论】:

      猜你喜欢
      • 2013-06-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-09-28
      • 1970-01-01
      • 2014-11-11
      • 1970-01-01
      相关资源
      最近更新 更多