如果我有桌子......
ID Name Manager
0 Joe Sue
1 Jake Tom
0 Joe Tom
2 Larry Red
2 Larry Paul
1 Jake Paul
我希望输出为....
ID Name Manager1 Manager2
0 Joe Sue Tom
1 Jake Tom Paul
2 Larry Red Paul
谢谢...
答案 0 :(得分:4)
如果我已正确理解您的请求,是的,会产生您正在寻找的结果。
SELECT
t1.Name Name,
t1.Manager Manager1,
t2.Manager Manager2
FROM
Table t1
inner join Table t2 on t1.Manager = t2.Name
当然,返回索引列的外键优先于性能的强大比较。
答案 1 :(得分:3)
是的,如果你的桌子被称为'经理':
SELECT Mgr1.ID,Mgr1.Name,Mgr1.Manager,Mgr2.Manager
FROM Managers AS Mgr1
LEFT JOIN Managers AS Mgr2
ON Mgr1.ID=Mgr2.ID
答案 2 :(得分:0)
如果你保持桌子加入是最好的。
如果你讨厌加入,你可以将最大和最小管理者结合起来,即使这样,如果总有2个经理并且他们不能有相同的名字,它也会起作用。
如果我记得如何正确连接2个查询,则以下内容应该有效。但我建议你看看是否有可能重做你的桌子,在经理员工关系中有一个单独的表格将人们联系起来。
SELECT DISTINCT
F.ID, F.Name, S.Manager, F.Manager
FROM
(SELECT
ID, Name, MIN(manager) manager
FROM Managers
GROUP BY ID, Name) F,
(SELECT
ID, Name, MAX(manager) manager
FROM Managers
GROUP BY ID, Name) S
WHERE
F.ID = S.ID
AND S.Manager <> F.Manager
AND F.ID < S.ID