我有以下数据库结构:
id(int)| user_id(int)| product_id(int)|数据(jsonb)
id,user_id和product_id的组合构成主键。因此,可以有多个行具有相同的product_id和user_id。
数据列包含一些包含以下内容的JSON
{ "item": boolean }
我需要的查询是选择user_id = x和data - > item = true的所有行。这部分我可以做,但我需要应用限制。限制不应限制返回的行数,而是限制返回的DISTINCT product_ids的数量。因此,如果我应用10的限制,如果每个唯一产品都有5行属于user_id并且item为true,则可以返回50行。
这是我到目前为止所做的,但它没有尝试这个限制。我相信我可能需要子查询或GROUPBY,但我不确定如何在Sequalize中实现这一点。
return this.myModel.findAll({
where: {
user_id: userId,
'data.item': true,
},
});
任何指导都将不胜感激!感谢
答案 0 :(得分:1)
执行此操作的查询涉及MAMP
子查询:
JOIN
据我所知,Sequelize不能代表这种查询结构,尽管inlining the subquery as a literal可能是可能的。但看起来你将以某种方式运行至少一些原始SQL。