SQL查询 - 显示在同一列两次不同的条件
我想知道如果下面是可能的下。说我有如下表:SQL查询 - 显示在同一列两次不同的条件
ID | NAME
1 | John
2 | Bob
3 | John
4 |鲍勃
是否有可能运行一个查询,结果如下:
名称| ID1 | ID2
约翰 | 1 | 3
鲍勃 | 2 | 4
EDIT
很抱歉的混乱。我的问题解决了我需要处理2个大型数据集重复的可能性的情况。
正好2个假设复制
SELECT
NAME,
MIN(ID) as ID1,
MAX(ID) as ID2
FROM Table t
GROUP BY NAME
这应该工作。请注意,子查询会筛选出所有不完全具有两个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;
如果恰好有两排,每个名称,然后下面应该工作:
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
这会给出重复的行,因为您不检查id值是否相同 – JNK 2012-02-01 18:57:45
这会回报方式结果太多。 – 2012-02-01 18:59:01
@JNK:对,我忘了。感谢您指出 – 2012-02-01 19:00:25
你是说,查询只需要处理2重复的可能性,或者只是你的例子有2? – JohnFx 2012-02-01 18:57:01
它只需要处理2个重复的可能性。 – 2012-02-01 18:58:57