SQL查询 - 在不同条件下显示两次相同的列

时间:2012-02-01 18:53:45

标签: sql

我想知道以下是否可行。说我有下表:

ID | NAME
1 |约翰 2 |鲍勃 3 |约翰 4 |鲍勃


是否可以运行导致以下结果的查询:

NAME | ID1 | ID2
约翰| 1 | 3
鲍勃| 2 | 4

修改

很抱歉这个混乱。我的问题解决了我需要处理大数据集重复2次的可能性的实例。

3 个答案:

答案 0 :(得分:9)

假设恰好有2个重复

SELECT 
   NAME, 
   MIN(ID) as ID1,
   MAX(ID) as ID2
FROM Table t
GROUP BY NAME

答案 1 :(得分:1)

这应该有效。请注意,子查询会筛选出不具有两个id的所有名称。

select name,min(id) as id1,max(id) as id2
from table
join(
    select name
    from table
    group by name
    having count(1)=2
)names
using(name)
group by name;

答案 2 :(得分:1)

如果每个名称恰好有两行,则以下内容应该有效:

 SELECT a.name,
        a.id as id1,
        b.id as id2
 FROM the_table a 
   JOIN the_table b ON a.name = b.name AND a.id <> b.id