カラムが「search_text」のテーブルtext
があります。私は明確なクリーンこれらのフィールドに希望セル内の重複値を削除するMySQL
1. 'MyBook MyBook PDF PDF',
2. 'Example 1 Example 2 Example 3'
3. 'John Snow John Snow'
:そのフィールドに
は私が値を持っています。期待される結果:
は1. 'MyBook PDF',
2. 'Example 1 2 3'
3. 'John Snow'
次のように私が思い付いたアプローチが行く: は、各レコードのフィールドを読んスペース(」「)、配列内の各テキストを置くことによってそれを分割し、array_unique
を行いますPHPで配列をjoin
の文字列に戻します。
これはPHPベースのソリューションです。私はこのためのMySQLソリューションをご希望です。私はきれいにする必要が180.000以上のレコードを持って、私はそれがPHP上でこれを実行する必要があるか分からない。
私は、MS SQLのための解決策を見つけた:大歓迎Remove duplicate values in a cell SQL Server
ヘルプ。私のテストデータの
SQL:
CREATE TABLE IF NOT EXISTS `test` (
`id` int(10) unsigned NOT NULL,
`search_text` text COLLATE utf8_unicode_ci NOT NULL
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
INSERT INTO `test` (`id`, `search_text`) VALUES
(1, 'MyBook MyBook PDF PDF'),
(2, 'Example 1 Example 2 Example 3'),
(3, 'John Snow John Snow'),
(4, 'test test test test formula test test test formula test test test formula test test test formula test test test formula test test test formula '),
(5, '');
ALTER TABLE `test`
ADD PRIMARY KEY (`id`);
ALTER TABLE `test`
MODIFY `id` int(10) unsigned NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=6;
閉じるが、今はかなり私が探しているもの。これにより、ALL行のALLエントリの行が生成されます。 – Rumplin
4よりも多くの値がある場合も機能しません(たとえば、「テストテストテストのテストテストテストテスト」など)。 – Rumplin