15
1つのグループに属する文字列を連結するクエリがあります。GROUP_CONCATの重複を避けるにはどうすればよいですか?
SELECT e.id,
ke.value,
re.value AS re_value,
GROUP_CONCAT(g.value,', ')
FROM entry e
INNER JOIN k_ele ke ON e.id = ke.fk
INNER JOIN r_ele re ON e.id = re.fk
INNER JOIN sense s ON e.id = s.fk
INNER JOIN gloss g ON s.id = g.fk
WHERE g.lang IS NULL
GROUP BY s.id
ORDER BY re_value
しかし
GROUP_CONCAT(g.value、 '')
は、この結果を与えています。あなたが見ることができるように
愛情関係、愛情関係、愛情関係、愛情関係、愛情、関係を愛する関係を愛し、関係を愛する関係
連結の重複があります。どのように連結の重複を避けるために?
が、 'GROUP_CONCAT(SQLiteのでDISTINCT'を、使用しているときに区切り文字を指定することはできません区切り文字をデフォルトの ''から変更したい場合は、CLの答えに表示されているようにサブクエリの手法を使用するか、置換を使用する必要があります(サブクエリ手法がはるかに優れていると思います)。 – GarethD
私は '' 'replace(GROUP_CONCAT(DISTINCT g.value)、 '、'、the_delimiter)' ''と一緒に行った。それはひどいですが、他の区切り文字とサブクエリが困難になる非常に大きなクエリに悩まされている場合は、これに対処する簡単な方法です。これが機能するには、値にカンマが含まれていないことが肯定的でなければなりません。 – Kelly
大規模なデータの場合は、サブクエリを実行するのが適切です。この場合、Distinctはちょうどハックになります。 –