使用SQL语句从field1-8中返回来自field2-8的唯一值,并且在field1中具有重复项的所有记录(多个不同的值重复)是否可行?我真的试图阅读/搜索/写作和测试,但我甚至无法接近。如果我发布了我所拥有的内容,那将只是垃圾。任何指示我正确方向的帮助将非常感激。
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
我的表(名称:[New(T)])包含多个像这样的块,我需要它来返回这样的值
DOCC1728544 1500174 Rlse,Deed 411þ615 1/1/1940 Roland,Hubert,Leola,Lottie,Walter,Nan Mary,Atlas 4.6A,256 1
再次感谢任何指导我正确方向的帮助。
答案 0 :(得分: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_string
和array_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;