我想知道如果下面是可能的下。說我有如下表:SQL查詢 - 顯示在同一列兩次不同的條件
ID | NAME
1 | John
2 | Bob
3 | John
4 |鮑勃
是否有可能運行一個查詢,結果如下:
名稱| ID1 | ID2
約翰 | 1 | 3
鮑勃 | 2 | 4
EDIT
很抱歉的混亂。我的問題解決了我需要處理2個大型數據集重複的可能性的情況。
我想知道如果下面是可能的下。說我有如下表: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