我想知道以下是否可行。说我有下表:
ID | NAME
1 |约翰
2 |鲍勃
3 |约翰
4 |鲍勃
是否可以运行导致以下结果的查询:
NAME | ID1 | ID2
约翰| 1 | 3
鲍勃| 2 | 4
修改的
很抱歉这个混乱。我的问题解决了我需要处理大数据集重复2次的可能性的实例。
答案 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