2016-01-29 32 views
-1

是否有可能使SQL語句返回字段1中具有重複項的所有記錄中的唯一值(多個不同的值重複)?我真的試圖讀/搜索/寫和測試,但我甚至不能接近。如果我發佈了我所擁有的東西,那隻會是垃圾。任何幫助指引我朝着正確的方向都將不勝感激。SQL返回來自重複項的唯一值

ID  Field1  Field2 Field3 Field4 Field5  Field6 Field7 Field8 
167128 DOCC1728544 1500174 Rlse 411þ615 1/1/1940 Roland Mary 4.6A 
167141 DOCC1728544 1500174 Rlse 411þ615 1/1/1940 Hubert Mary 4.6A 
178272 DOCC1728544 1500174 Rlse 411þ615 1/1/1940 Leola Mary 4.6A 
139260 DOCC1728544 1500174 Rlse 411þ615 1/1/1940 Lottie Mary 4.6A 
139261 DOCC1728544 1500174 Rlse 411þ615 1/1/1940 Walter Mary 4.6A 
200243 DOCC1728544 1500174 Deed 411þ615 1/1/1940 Nan  Atlas 256 1 

我的表(名稱:[新(T)])包含多個塊這樣的,我需要它返回這樣指着我在正確的任何幫助

DOCC1728544 1500174 Rlse,Deed 411þ615 1/1/1940 Roland,Hubert,Leola,Lottie,Walter,Nan Mary,Atlas 4.6A,256 1 

再次感謝值方向。

+0

這是可能的,在MySQL叫GROUP_CONCAT –

+0

我使用的訪問SQL查詢 – Jimmy

回答

0

在MySQL中,它會是這個樣子

SELECT id, field1, field2, GROUP_CONCAT(DISTINCT field3) as field3, field4, field5, 
GROUP_CONCAT(field6) as field6, field7, field8 
FROM table 
WHERE field1 = 'DOCC1728544' 
LIMIT 1; 

看起來你在同一列希望將多個值加在一起。要做到這一點,我們使用GROUP CONCAT(distinct col)。在這種情況下,我們在field3和field6上執行組連接。

我們只查找一條​​記錄,所以我們只使用LIMIT 1聲明。

這裏的小提琴

http://sqlfiddle.com/#!9/89a7af/3/0

如果您使用的是Postgres,你可以使用的array_to_stringarray_agg的組合。

SELECT id, field1, field2, ARRAY_TO_STRING(ARRAY_AGG(DISTINCT field3), ',') as field3, 
field4, field5, ARRAY_TO_STRING(ARRAY_AGG(DISTINCT field6), ',') as field6, field7, field8 
FROM table 
WHERE field1 = 'DOCC1728544' 
LIMIT 1; 
+0

非常感謝我讀書,並嘗試應用它。我的exsample中沒有顯示field1中有多個不同的重複項。 – Jimmy

+0

在Postgres中,'string_agg()'會是更好的選擇 –

+0

@a_horse_with_no_name我該怎麼做。只要'string_agg(DISTINCT field3)'? –