Name Hobby
John | Fishing,Traveling
Mary | Reading,
Tom | Music,
Kate | Cooking,Reading
George | Traveling,
Peter | Fishing,
Lisa | Cooking,
我想选择这个表
Hobby Count
Fishing | 2
Traveling | 2
Reading | 2
Music | 1
Cooking | 2
我该怎么做?
答案 0 :(得分:2)
正确使用您的表,而不是将多个爱好值塞进一列。你应该:
John | Fishing
John | Traveling
Mary | Reading
Tom | Music
Kate | Cooking
Kate | Reading
George | Traveling
Peter | Fishing
Lisa | Cooking
然后你可以这样做:
select hobby
, count(*) count
from tablename
group by hobby
order by hobby
答案 1 :(得分:1)
我会像@Wes
那样做或如果它不可能我会用PHP
$result = array();
$sql = 'SELECT Hobby, count(*) as cnt FROM youttable GROUP BY Hobby';
foreach ($conn->query($sql) as $row) {
foreach(explode(',',$row['Hobby']) as $hobby) {
$result[$hobby] += $row['cnt'];
}
}
答案 2 :(得分:0)
一般来说,你要做的就是有一个单独的兴趣爱好者表。 所以你的第一个表将包括:nameID,name。 你的第二个表将包括:hobbyID,nameID,description。 设置完成后,使用nameID将两个表链接在一起。
SELECT * FROM nameTable, hobbyTable WHERE nameTable.nameID = hobbyTable.nameID
如果你有,你可以在hobbyTable上使用count()来获取数量。
答案 3 :(得分:-1)
SELECT Hobby, Count(*) FROM myTable ORDER BY Hobby GROUP BY Hobby