mariadb 再次询问-使用select子句返回来自同一属性的不同值- MySQL

x6yk4ghg  于 2022-11-08  发布在  Mysql
关注(0)|答案(1)|浏览(115)

我需要从雇员表中选择主管和非主管的姓名。因此,我需要返回两个单独的列,一个用于主管的姓名,一个用于雇员的姓名。
为此,我试着像这样使用where exists

select concat(first_name, middle_name, last_name) as supervisor_name, concat(first_name, middle_name, ulast_name) as employee_name
from employees
where exists (select employee_name from employees where employees.id = department.supervisor_id);

我还尝试在两个select子句之间创建一个联合,如下所示:

select  concat (first_name, middle_name, last_name) as supervisor_name
from employees
where exists (select * from department where employees.id = department.supervisor_id)
union
select  concat (first_name, middle_name, last_name) as employee_name
from femployees
where exists (select * from department where employees.id != department.supervisor_id);

请注意,部门是另一个表,其中包含主管的ID号。
我曾搜索过是否可以使用某种check约束作为替代,但没有找到。我还尝试应用select distinct,试图“除”返回的值,但无法使其工作。
我也尝试过使用别名,但它返回字段中的first_name是不明确的。

select concat (first_name, middle_name, last_name) as supervisor_name, concat (first_name, middle_name, last_name) as employee_name
from employees
join employees as supervisor_name on department.supervisor_id = employees.id
join employees as supervisor_id on department.supervisor_id != employees.id;
41ik7eoe

41ik7eoe1#

必须与department表联接。
您需要在SELECT列表中使用表别名以避免歧义。

select concat (s.first_name, s.middle_name, s.last_name) as supervisor_name, concat (e.first_name, e.middle_name, e.last_name) as employee_name
from employees AS e
JOIN department as d ON e.department_id = d.id
join employees as s on d.supervisor_id = s.id

相关问题