我与一个模型有多个关联,我想在所有查询中选择 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'.