0

我有一张这样的桌子-

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 用逗号分隔格式。

预期成绩 -

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 作为数据库。

4

2 回答 2

2

使用要在输出中区分的列分组,应用于GROUP_CONCAT()要显示为一个或多个列表的列。

SELECT
  GROUP_CONCAT(uid),
  test1, test2, test3, test4, test5
FROM atable
GROUP BY test1, test2, test3, test4, test5
于 2011-06-27T14:41:57.630 回答
0

您可以使用 group by CONCAT(测试重复值的列)。

或尝试使用此处给出的查询:http: //oscarvalles.wordpress.com/2008/01/28/sql-distinct-on-one-column-only/

然后使用 GROUP_CONCAT 将与特定列重复的列合并(除您的案例中的第一个之外)。

于 2011-06-27T11:17:24.237 回答