我有一张名为votes的表,用于存储用户所做的投票。该表存储了user_id,group_id,投票的时间戳以及用户投票的item_id:
votes
------------
user_id
group_id
item_id
vote_datetime
我设置表格的方式意味着用户可以多次投票给同一个项目,这些投票之间的唯一区别就是日期时间。
我的问题是如何使用相同的group_id选择该表的所有元素,但条件是每个用户只计算一个项目的一个投票? 提前致谢 卡尔
编辑:这是一个开始。
选择group_id的所有元素等于1
allvotes = models.votes.query.filter_by(group_id = 1).all()
那么如何修改此项以确保用户无法对同一项投票两次?
答案 0 :(得分:0)
您可以在(用户,组,项目)的组合上分配主键,如下所示:
query(user_id, group_id, item_id, func.min(vote_datetime)).
group_by(User_id, group_id, item_id)
如果您只想查询唯一投票,请将聚合函数与group:
一起使用{{1}}
上面应该接近你需要的语法。