如何使用Sequelize for MSSQL DB选择不同的字段

时间:2018-09-07 08:10:57

标签: sql-server sequelize.js

我与一个模型有多个关联,我想在所有查询中选择 DISTINCT 字段。 该模型如下所示:

Parent.hasMany(Child1);
Parent.hasMany(Child2);
Child1.belongTo(Parent);
Child2.belongTo(Parent);

我正在使用以下命令来获取不同的值。

Parent.findAll({
    distinct: true,
          include: [
              {
                  model: Child1,
                  attributes:  ['attr1', 'attr2']
              },
              {
                  model: Child2,
                  attributes:  ['attr3', 'attr4']
              },              
            ]
})      

此查询不会在生成的查询之前添加 DISTINCT 关键字。 我错过了什么吗?

问题2:
我也只为Child1尝试了不同的值,所以我尝试了以下查询:

Parent.findAll({
    distinct: true,
          include: [
              {
                  model: Child1,
                  attributes: [
                    [
                      sequelize.fn('DISTINCT', sequelize.col(attr1)), 'attr1'
                    ],
                    [
                      sequelize.fn('DISTINCT', sequelize.col('attr2')), 'attr2'
                    ]
                  ]
              },
              {
                  model: Child2,
                  attributes:  ['attr1', 'attr2']
              },              
            ]
});  

但这会生成MSSQL Server不支持的SQL语法。
示例:

Select Parent.name, Parent.id, Distinct([Child1].[attr1]) as [Child1.attr1] ........

执行此查询时,出现以下错误:

Incorrect syntax near the keyword 'DISTINCT'.

0 个答案:

没有答案