2016-10-05 21 views
1

カンマ区切りの値をこのようにカウントする方法が必要です - すべて 提案してください。コンマで区切られた文字列の数をカウントする

表:

id (int) | site (varchar) 
1  | 1,2,3 
2  | 2,3 
3  | 1,3 

所望の出力:

site | # of occurrences 
1 | 2 
2 | 2 
3 | 3 
+0

1.ドン」の行を保存

あなたの質問にコメントををほのめかしている何を、いくつかの説明のリレーショナルテーブルを使用することで、コンマで区切られた文字列で始まります。 – Strawberry

+0

、またはRDBMSを気にしないでください – Strawberry

+0

http://stackoverflow.com/questions/3653462/is-storing-a-delimited-list-in-a-database-column-really-that-bad/3653574 – e4c5

答えて

0

あなたがやっている正確に何に入るがなければ、私はあなたがsitesテーブルを持っていると仮定します。もしそうであれば、インデックスを使用する方法がないとして、それは、ぞっとするだろうというの

SELECT sites.site_id AS site, COUNT(1) AS `# of occurrences` 
FROM sites 
INNER JOIN table ON FIND_IN_SET(sites.site_id, table.site) 
GROUP BY sites.site_id 

パフォーマンスのようなもので、技術的に達成可能だし、データが非常に簡単に矛盾得ることができるようになります。代わりにコンマ区切りのリストを格納する、あなたが各「出現」

関連する問題