Quantcast
Channel: プログラム の個人的なメモ
Viewing all articles
Browse latest Browse all 860

【SQL】初めの数文字が一致してたら同一データと見なすSQL文

$
0
0

■ はじめに

 初めの数文字が一致してたら同一データと見なし、重複を排除するSQL文を考える

解決案

以下を使えば可能。

 * サブクエリ
 * LEFT()
 * GROUP BY

■ 実行環境

 * 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.

Viewing all articles
Browse latest Browse all 860

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>