■ はじめに
初めの数文字が一致してたら同一データと見なし、 重複を排除するSQL文を考える
目次
【1】解決案 【2】サンプル
【1】解決案
以下を使えば可能。 * サブクエリ * LEFT() * GROUP BY
【2】サンプル
* DB : MySQL5.7
テーブル
CREATE TABLE `message` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `message_text` TEXT NULL, PRIMARY KEY (`id`) ) COLLATE='utf8_general_ci' ENGINE=InnoDB ;
データ
INSERT INTO `message` (`id`, `message_text`) VALUES (1, 'Thank you for your attention.'); INSERT INTO `message` (`id`, `message_text`) VALUES (2, 'Thank you for asking'); INSERT INTO `message` (`id`, `message_text`) VALUES (3, 'Sorry to be late.'); INSERT INTO `message` (`id`, `message_text`) VALUES (4, 'Thank you for your advise.'); INSERT INTO `message` (`id`, `message_text`) VALUES (5, 'Sorry...');
SQL文
SELECT * FROM message AS m WHERE m.id IN ( SELECT MIN(id) FROM message AS sub_m GROUP BY LEFT(sub_m.message_text, 5) )
出力結果
id | message_text ---+------------------------------ 1 | Thank you for your attention. 3 | Sorry to be late.
関連記事
サブクエリ / 副問合せ
https://dk521123.hatenablog.com/entry/2015/12/21/002727
過去直近データを取得するには
https://dk521123.hatenablog.com/entry/2016/01/05/234938
最新日付データを取得するには
https://dk521123.hatenablog.com/entry/2014/10/09/004105
期間が重なるデータを取得するには
https://dk521123.hatenablog.com/entry/2011/12/17/025502
順位付け・ランキング ~ RANK / DENSE_RANK ~
https://dk521123.hatenablog.com/entry/2012/08/15/225233