MySql:如何"列出"列中具有相同文本的记录

时间:2017-04-08 14:25:40

标签: mysql sql

我有一个包含文本的表格,想要获取所有具有相同文本的记录,例如:

SELECT t1.id, t2.id FROM table AS t1
    LEFT JOIN table AS t2 ON (t1.txt = t2.txt AND t1.id != t2.id);

到目前为止,此工作正常。问题是文本可能会出现两次以上。在上面的陈述中,我得到(如果id 1,2和3具有相同的txt):

1    2
1    3
2    1
2    3
3    1
3    2

得到像这样的东西会很重要:

1    2|3
2    1|3
3    1|2

最好是没有双打,但我想如果它可能是一个非常慢的查询:

1    2|3

知道如何在mysql中直接实现这个吗?

2 个答案:

答案 0 :(得分:2)

您可以使用GROUP BYGROUP_CONCAT()

获得所需的结果
SELECT t1.id, GROUP_CONCAT(t2.id SEPARATOR '|')
FROM table t1 LEFT JOIN
     table t2
     ON t1.txt = t2.txt AND t1.id <> t2.id
GROUP BY t1.id;

答案 1 :(得分:2)

您可以使用group_concat获得第一个预期输出:

select t1.id,
    group_concat(t2.id separator '|')
from table as t1
left join table as t2 on (
        t1.txt = t2.txt
        and t1.id != t2.id
        )
group by t1.id;