SQL从重复

时间:2016-01-29 20:26:50

标签: sql ms-access

使用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

再次感谢任何指导我正确方向的帮助。

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_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;