質問: いつもお世話になっております。 ググってもわからなかったので今回もまたご教授いただきたいと思います。 宜しくお願いいたします。 SET型のデータはSQL文でカウントできるのでしょうか? データは以下の通りです。 ``` Host: 127.0.0.1 Database: real_estate Generation Time: 2016 年 5 朁E27 日 13:00 Generated by: phpMyAdmin 4.2.11 / MySQL 5.6.21 SQL query: SELECT * FROM `example` LIMIT 0, 25 ; 行: 3 id pid 1 1,2,3 2 2,3 3 3,4 ``` 上の例を受けて 結果を以下のようにしたいです。 ``` pid cnt 1 1 2 2 3 3 4 1 ``` 何卒宜しくお願いいたします。 補足 わかりにくくて申し訳ございません。 1~4はユニークで固定になっています。
回答: とりあえず、すぐに思いついた方法を書いてみます。 私はMySQLヘビーユーザーでないので、もっときれいな方法があるかも知れません。 ``` select 1 as pid0, count(*) as cnt from `example` where pid like '%1%' union all select 2 as pid0, count(*) as cnt from `example` where pid like '%2%' union all select 3 as pid0, count(*) as cnt from `example` where pid like '%3%' union all select 4 as pid0, count(*) as cnt from `example` where pid like '%4%' ``` `pid`ごとにカウントした結果を、`union all`で結合します。(ユニークになるから`all`は無くても良いかも) 名前が被るので、別名は`pid0`にしています。 ※SET型の列はインデックスが利かないらしいので、データ件数が多い場合はご注意ください。