Sequelize - 限制模型包括按列分组的内容

时间:2018-03-31 15:30:30

标签: node.js sequelize.js

当前的Sequelize Query

我正在使用此SequelizeJS查询来获取产品和价格数据。

models.products.findAll({
      where: Sequelize.where(Sequelize.fn('CONCAT_WS', ' ', Sequelize.col('brand'), Sequelize.col('name')),{ $like: `%${searchQuery}%`}),
      limit: limit,
      offset: offset,
      include: [{
        model: models.prices,
        group: ['sourceId']
      }],
      order: [
        ['name', 'desc'],
        [models.prices, 'createdAt', 'desc']
      ],
    });

主要问题在于此查询的include部分。

包含查询结果示例

我的prices模型列如下所示,这是对其中一个包含内容的示例查询。

id      price   createdAt  updatedAt               sourceId productId
4685    329.99  2018-03-06 17:47:13 2018-03-06 17:47:13 1   7
4466    399.00  2018-02-23 16:46:59 2018-02-23 16:46:59 1   7
3881    329.00  2017-11-16 13:13:15 2017-12-10 19:15:40 1   7
3749    339.99  2017-10-18 09:50:53 2017-10-18 09:50:53 3   7
2661    349.00  2017-08-08 13:57:07 2017-08-08 13:57:07 3   7
7       349.00  2017-08-03 17:01:24 2017-09-17 10:24:55 1   7

我的目标是按sourceId进行分组和限制,但按该列分组并不是我的解决方案。

预期结果

而不是上述结果,这是我所期望的:

id       price  createdAt           updatedAt        sourceId productId
4685    329.99  2018-03-06 17:47:13 2018-03-06 17:47:13 1   7
3749    339.99  2017-10-18 09:50:53 2017-10-18 09:50:53 3   7

这里的区别在于它是每个sourceId的限制/组,并且只显示每个sourceId最近创建的行。

最初我收到一条错误,指出我是SQL的这种模式:sql_mode=only_full_group_by,其他用户建议删除此模式。这感觉就像一个混乱的方法,但它确实删除了我的错误并获取结果 - 但不像我期望的那样。

0 个答案:

没有答案