再次询问 - 使用 select 子句来 return 来自同一属性的不同值 - MySQL
Asking again - Using a select clause to return different values that come from the same atribute - MySQL
我需要 select 员工 table 主管人员和非主管人员的姓名。因此,我需要两个单独的列来return,一个是主管的名字,一个是员工的名字。
为此,我试过像这样使用 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);
请注意,该部门是另一个 table,其中我有主管的身份证号码。
我搜索过是否可以使用某种 check
约束作为替代,但找不到。
我还尝试应用 select distinct
,试图“划分”值 returned 但无法使其正常工作。
也尝试过使用别名,但 returnfirst_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;
您必须加入 department
table。
您需要在 SELECT
列表中使用 table 别名以避免歧义。
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
我需要 select 员工 table 主管人员和非主管人员的姓名。因此,我需要两个单独的列来return,一个是主管的名字,一个是员工的名字。
为此,我试过像这样使用 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);
请注意,该部门是另一个 table,其中我有主管的身份证号码。
我搜索过是否可以使用某种 check
约束作为替代,但找不到。
我还尝试应用 select distinct
,试图“划分”值 returned 但无法使其正常工作。
也尝试过使用别名,但 returnfirst_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;
您必须加入 department
table。
您需要在 SELECT
列表中使用 table 别名以避免歧义。
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