gpt4 book ai didi

MySQL,过滤重复集

转载 作者:行者123 更新时间:2023-11-29 08:21:49 25 4
gpt4 key购买 nike

我有一个从单个表输出组合的查询

Select  t1.id as id1, t2.id as id2, t3.id as id3
mytable t1,
mytable t2,
mytable t3
WHERE condition = true

当表包含 5 个条目时,返回如下内容

row  id1, id2, id3

1. 1, 2, 3
2. 1, 2, 4
3. 1, 2, 5
4. 1, 3, 4
5. 1, 3, 5
6. 1, 3, 2
7. 2, 1, 3
8. 2, 1, 4
9. 2, 1, 3
etc....

我想过滤掉 3 的唯一组合,因此在上面的示例中,第 1,6 行和第 7 行是同一组(它们都包含 1、2 和 3),因此只保留其中之一。

有没有办法生成另一列来表示该集合的唯一值?

例如,是否可以对 id1、id2 和 id3 进行排序并生成唯一的字符串? (我知道排序在列上效果很好,但是在 MySQL 中是否可以在行上排序)。类似于 GROUP_CONCAT,但元素已排序。

或者有其他方法可以消除重复集吗?

最佳答案

我尝试了以下方法:

SELECT t1.id as id1,
t2.id as id2,
t3.id as id3
FROM t1, t2, t3
GROUP BY MD5(t1.id+" "+t2.id+" "+t3.id)

我认为结果可能就是您所需要的,因为
md5(t1.id+" "+t2.id+" "+t3.id) =md5(t3.id+" "+t2.id+" "+t1.id)
=md5(t2.id+" "+t1.id+" "+t3.id)等等..

编辑:我还添加了一个不等式以避免相同的 id 记录,
WHERE t1.id <> t2.id AND t2.id <> t3.id AND t1.id <> t3.id .

参见SQLFiddle

关于MySQL,过滤重复集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19175915/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com