我有一个场景,我希望使用sequelize执行以下查询。
从master中选择* catg_level = 1和obj_id in(从master中选择obj_id,其中catg_level = 2)按位置排序;
我使用sequelize编写的代码如下。
Master.all({
where: {catg_level: '1'},
order: 'position ASC',
include: [{
model: Master,
as: 'sub-menu',
where: {catg_level: '2'}
}]
})
.then(function(a){
try {
console.log(JSON.stringify(a));
} catch (e) {
console.log(e);
}
});
SQL生成了这个
条件catg_level = 2被添加到主查询中,而不是作为子查询添加。我明白这是实际的功能。但有没有办法解决这个问题呢?请指教。
提前致谢。
答案 0 :(得分:0)
您可以使用sequelize.literal
:
{
where: {
catg_level: '1',
obj_id:{
in:[sequelize.literal('(select obj_id from master where catg_level = 2)')]
}
},
order: 'position ASC',
}