2017-04-08 2 views
1

で同じテキストと同じように私は、テキストを持つテーブルを持っており、同じテキストを持つすべてのレコードを取得したい:これは、これまで正常に動作しますのMySql:どのように「リスト」の記録欄

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

。問題は、テキストが2回以上出現する可能性があることです。上記のステートメントでは、私は(ID 1場合は、2と3は同じTXTを持っている)を取得:

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

のような何かを得るためにgreateのだろう:

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

ベストなし得ることであろうMySQLで直接これを達成するためにどのように任意のアイデア

1 2|3 

:ダブルス、私はそれが可能だ場合、非常に遅いクエリであるかもしれないと思いますか?

+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; 
+0

作品、ありがとうございました! – Werner

2

あなたはgroup_concatを使用して第1の期待出力を得ることができます:

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; 
+0

作品、ありがとうございました! – Werner

関連する問題