SQL循环遍历表计数和分组

时间:2014-04-07 16:46:22

标签: sql sqlite

我有一张这样的表

 ID|list
  1|:A:B:C:
  2|:B:D:A:
  3|:C:A:D:

我想计算A,B,C,D中的每一个的数量,并将它们分组为

A|3
B|2
C|2
D|2

我正在考虑迭代表并从count语句中将值插入临时表,如下所示

select count(*) from table where list like %:A:%

它确实看起来很难看。有更好的方法吗?

(我在qt使用sqlite)

1 个答案:

答案 0 :(得分:2)

从不,永远,永远不要在一列中存储多个值!更好的数据库设计将是

movies table
----------
id
name
release_date
...


actors table
------------
id
first_name
last_name
birth_date
...


movie_cast table
----------------
movie_id
actor_id

然后你可以选择像这样的特定电影的所有演员

select a.lastName, a.first_name
from actors a
join movie_cast c on c.actor_id = a.id
join movies m on c.movie_id = m.id
where m.name = 'Citizen Kane'

或者像这样选择特定演员出演的所有电影

select m.name
from actors a
join movie_cast c on c.actor_id = a.id
join movies m on c.movie_id = m.id
where a.lastName ='Wayne'
and a.first_name 'John'