我有一张这样的表
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)
答案 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'