やりたいこと
例えばdata1、data2、data3のカラムがあってそれぞれのカラムを合体して文字の出現回数を調べたい
テーブル
CREATE TABLE `hoge` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `data1` varchar(255) NOT NULL, `data2` varchar(255) NOT NULL, `data3` varchar(255) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4;
ダミーデータ
INSERT INTO `hoge` (`id`, `data1`, `data2`, `data3`) VALUES (1, 'a', 'b', 'c'), (2, 'c', 'd', 'b'), (3, 'c', 'b', 'a'), (4, 'b', 'b', 'a'), (5, 'd', 'a', 'd');
SQL
select count(*) AS cnt, data1 from (select data1 from hoge UNION ALL select data2 from hoge UNION ALL select data3 from hoge ) AS tmp group by data1 order by cnt desc
すると
cnt data1 5 b 4 a 3 c 3 d
と取得できる