Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 按列中的唯一值对限制进行排序_Javascript_Postgresql_Sequelize.js - Fatal编程技术网

Javascript 按列中的唯一值对限制进行排序

Javascript 按列中的唯一值对限制进行排序,javascript,postgresql,sequelize.js,Javascript,Postgresql,Sequelize.js,我有以下数据库结构: id(int)|用户id(int)|产品id(int)|数据(jsonb) id、用户id和产品id的组合构成主键。因此,可以有多行具有相同的产品id和用户id 数据列包含一些JSON,其中包含以下内容 {“item”:boolean} 我需要的查询是选择user_id=x且data-->item=true的所有行。这部分我可以做,但我需要施加一个限制。该限制不应限制返回的行数,而应限制返回的不同产品标识的数量。因此,如果我应用10的限制,我可以返回50行,如果每个唯一的产

我有以下数据库结构:

id(int)|用户id(int)|产品id(int)|数据(jsonb)

id、用户id和产品id的组合构成主键。因此,可以有多行具有相同的产品id和用户id

数据列包含一些JSON,其中包含以下内容
{“item”:boolean}

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

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

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

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

执行此操作的查询包括
JOIN
ing子查询:

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不能表示这种查询结构,尽管它可能是可行的。但看起来您至少会以这种或那种方式运行一些原始SQL。

我确实需要使用原始查询选项。我看不到另一条路。谢谢你的回答