如何在 mySQL 中并排显示项目、小组成员和他们的老板
How to display project, group members and their boss side by side in mySQL
我想显示(团队ID,团队名称,实习生ID,实习生姓名,记者ID,记者姓名)我所有的记录。我不知道如何为同一个团队区分一个专栏的实习生和另一个专栏的记者。我想这样做是因为我希望每个记者都为他们在该组中工作的每个实习生提供评估。
您可以对 Intern 和 Reporter 使用带子查询的联接
select a.teamID, a.temaName,
b.peopleID intren_id, b.firstname intern_name, b.lastname inter_lastname,
c.peopleId, c.firstname reporter_name, c.lastname reporter_lastname
from mytable a
inner join (
select teamId, firstname, lastname
from mytable
where pType = 'Intern'
) b on a.teamId = b.teamId
inner join (
select teamId, firstname, lastname
from mytable
where pType = 'Reporter'
) c on a.teamId = c.teamId
我认为您需要垂直的列 "lists"。这实际上不是关系结构,因为行中的值彼此不相关。
但是,您可以使用条件聚合来实现。但是,您需要枚举这些值。在 MySQL 8+ 中,使用 row_number()
很容易,因此查询如下所示:
select teamid, teamname,
max(case when ptype = 'intern' then peopleid end) as intern,
max(case when ptype = 'reporter' then peopleid end) as reporter
from (select t.*,
row_number() over (partition by teamid, ptype order personid) as seqnum
from t
) t
group by teamid, teamname, seqnum;
我想显示(团队ID,团队名称,实习生ID,实习生姓名,记者ID,记者姓名)我所有的记录。我不知道如何为同一个团队区分一个专栏的实习生和另一个专栏的记者。我想这样做是因为我希望每个记者都为他们在该组中工作的每个实习生提供评估。
您可以对 Intern 和 Reporter 使用带子查询的联接
select a.teamID, a.temaName,
b.peopleID intren_id, b.firstname intern_name, b.lastname inter_lastname,
c.peopleId, c.firstname reporter_name, c.lastname reporter_lastname
from mytable a
inner join (
select teamId, firstname, lastname
from mytable
where pType = 'Intern'
) b on a.teamId = b.teamId
inner join (
select teamId, firstname, lastname
from mytable
where pType = 'Reporter'
) c on a.teamId = c.teamId
我认为您需要垂直的列 "lists"。这实际上不是关系结构,因为行中的值彼此不相关。
但是,您可以使用条件聚合来实现。但是,您需要枚举这些值。在 MySQL 8+ 中,使用 row_number()
很容易,因此查询如下所示:
select teamid, teamname,
max(case when ptype = 'intern' then peopleid end) as intern,
max(case when ptype = 'reporter' then peopleid end) as reporter
from (select t.*,
row_number() over (partition by teamid, ptype order personid) as seqnum
from t
) t
group by teamid, teamname, seqnum;