gpt4 book ai didi

javascript - 通过列中的唯一值来限制限制

转载 作者:行者123 更新时间:2023-11-29 13:20:50 25 4
gpt4 key购买 nike

我有以下数据库结构:

编号(整数) |用户 ID(整数) |产品编号(整数) |数据(jsonb)

id、user_id 和 product_id 的组合构成主键。因此可以有多个行具有相同的 product_id 和 user_id。

数据列有一些包含以下内容的 JSON{ "item": bool 值 }

我需要的查询是选择 user_id = x 和 data-->item = true 的所有行。这部分我可以做,但我需要申请一个限制。该限制不应限制返回的行数,而是限制返回的 DISTINCT product_id 的数量。因此,如果我应用 10 的限制,如果每个唯一产品都有 5 行属于 user_id 和 item true,我可以返回 50 行。

这是我到目前为止所拥有的,但它没有尝试达到这个限制。我相信我可能需要一个子查询或 GROUPBY,但我不确定如何在 Sequalize 中实现它。

return this.myModel.findAll({
where: {
user_id: userId,
'data.item': true,
},
});

任何指导将不胜感激!谢谢

最佳答案

执行此操作的查询涉及JOIN子查询:

SELECT m.*
FROM my_model m
JOIN (
SELECT DISTINCT product_id FROM model LIMIT 10
) n ON n.product_id = m.product_id
WHERE m.user_id = $1 AND (data->>'item')::boolean IS TRUE;

据我所知,Sequelize 无法表示此查询结构,尽管 inlining the subquery as a literal有可能。但看起来您将至少以一种或另一种方式运行一些原始 SQL。

关于javascript - 通过列中的唯一值来限制限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42071530/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com