我在SQLAlchemy中有这些表(数据库在sqlite3中):
镜头表
shot_id frame_id ....
1 10
2 11
3 10
4 20
5 20
6 5
7 20
8 6
. .
. .
. .
在此表中,shot_id
是primary
密钥,frame_id
是foreign
密钥。现在我想写一个查询,它给我所有shot_id
具有相同frame_id
且frame_id
s的数量大于或等于2.例如,在上表中,我想要shot_id
1,3 frame_id=10
(它们都有相同的frame_id
,而且有2个条目frame_id=10
)和shot_id
4,5 ,frame_id=20
为7。我写了这个查询:
select shot_id,count(frame_id) from shot group by frame_id having count(frame_id)>=2;
但它只给了我shot_ids 3和7.似乎group by
只保留每个组的最后一个元素。我该怎么办才能得到所有镜头?
答案 0 :(得分:0)
如上所述,你不需要“计算”任何东西;自我加入就足够了......
SELECT DISTINCT x.*
FROM my_table x
JOIN my_table y
ON y.frame_id = x.frame_id
AND y.shot_id <> x.shot_id;