- ベストアンサー
1つのカラムから一致する単語の数を数える方法
- 1つのカラムから一致している単語が何個あるか数える方法について質問します。
- 質問者は、特定の単語に一致するデータの数をカウントしたいと考えています。
- 具体的には、データベーステーブルの特定のカラムから、'東京''福岡''愛知'に一致する単語の数を調べたいとのことです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
元のデータでやるとこんな感じ //準備 create table table1(id int,kaisai varchar(50)); insert into table1 values(1,'東京、福岡、広島、愛知'),(2,'東京、北海道、大阪'),(3,'広島、福岡、沖縄、愛知'),(4,'広島、福岡、愛知'); //集計 select id,sum(kaisai like '%東京%')+sum(kaisai like '%福岡%')+sum(kaisai like '%愛知%') count from table1 group by id; ただしこれはカンマ区切りをチェックしているわけではなく含まれているかどうかなので 実際にはSQLを使うからには以下のようにするのが妥当 //準備 create table table2(id int,kaisai varchar(20)); insert into table2 value(1,'東京'),(1,'福岡'),(1,'広島'),(1,'愛知'),(2,'東京'),(2,'北海道'),(2,'大阪'),(3,'広島'),(3,'福岡'),(3,'沖縄'),(3,'愛知'),(4,'広島'),(4,'福岡'),(4,'愛知'); //とりあえず表示 select id,group_concat(kaisai SEPARATOR '、') as kaisai from table2 group by id; //集計 select id,count(kaisai in ('東京','福岡','愛知')) as count from table2 group by id;
その他の回答 (1)
- nora1962
- ベストアンサー率60% (431/717)
なぜ table1 ┼─────┼ │gro│kaisai│ ┼─────┼ │ 1│東京 │ │ 1│福岡 │ │ 1│広島 │ │ 1│愛知 │ ┼──────┼ │ 2│東京 │ │ 2│北海道 │ │ 2│大阪 │ ┼──────┼ │ 3│広島 │ │ 3│福岡、 │ │ 3│沖縄 │ │ 3│愛知 │ ┼──────┼ │ 4│広島 │ │ 4│福岡 │ │ 4│愛知 │ ┼──────┼ のようにテーブル設計しないのか不思議。MySQLなら必要な時にgroup_concatでまとめられるし。 元データで出来るかどうかは分からない。
お礼
すみません、ド素人で独学でなんとかやってたもので、 その発想すらできませんでした(>_<) group_concatでできるよう、作りなおしてみます!! ありがとうございました、本当、参考になります!!
お礼
元データでもできるんですね!! なんとか作ったものなので、かなりスマートではないのですが、 できるものなのですね!! すぐ試させていただきます!!
補足
捕捉で失礼します。 例文を挙げての大変わかりやすい回答で、すぐに解決することができました!! どうしても、ほしい結果が、 table1の結果でしたので、table1を参考にさせていただきます!! また、table2の方は とりあえず表示の方法(kaisai SEPARATOR '、') とか知らなかったので、大変勉強になりました!! 本当に、ありがとうございました!!