我有一张这样的表 -
uid test1 test2 test3 test4 test5
10 x1 x2 x3 x4 x5
11 x6 x7 x8 x9 x10
12 x11 x12 x13 x14 x15
13 x16 x17 x18 x19 x20
14 x16 x17 x18 x19 x20
15 x21 x22 x23 x24 x25
16 x26 x27 x28 x29 x30
从上面的表中可以看出,uid 13和14的行对除了uid之外的所有列都有相同的值。
所以我想过滤除了列uid之外的所有行具有完全相同的值(即列uid可以推迟值),在最终结果中我想要重复行或类似行的行 它的uid列是所有重复的,以逗号分隔的格式。
预期结果 -
uid test1 test2 test3 test4 test5
10 x1 x2 x3 x4 x5
11 x6 x7 x8 x9 x10
12 x11 x12 x13 x14 x15
13,14 x16 x17 x18 x19 x20
15 x21 x22 x23 x24 x25
16 x26 x27 x28 x29 x30
我尝试使用DISTINCTROW,但它要求所有列都相同才能将行视为重复。
任何建议表示赞赏。
编辑:我使用MYSQL作为数据库。
答案 0 :(得分:2)
按照您希望在输出中显示的列进行分组,对要显示为列表或列表的列应用GROUP_CONCAT()
。
SELECT
GROUP_CONCAT(uid),
test1, test2, test3, test4, test5
FROM atable
GROUP BY test1, test2, test3, test4, test5
答案 1 :(得分:0)
你可以使用CONCAT小组(专栏来测试重复值)。
或尝试使用此处给出的查询: http://oscarvalles.wordpress.com/2008/01/28/sql-distinct-on-one-column-only/
然后使用GROUP_CONCAT合并与特定列重复的列 (除了你的情况以外的所有情况)。