美文网首页
sequelize关联查询的分页问题,join,limit

sequelize关联查询的分页问题,join,limit

作者: AsaGuo | 来源:发表于2019-02-27 15:01 被阅读0次

需求:

select * 
  from product 
  join product
    on product.id=place.productid 
   and place.city=1100 
 where product.price>100 
 limit 10

错误写法:

models.product.findAll({
   where: ["price>=?", 100 ],
   include: [{
       model:models.product,
       where: { city:1100 }
   }],
   limit:12
})
// 生成的sql语句中,分页限制错误
select product.*, place.* 
 from (select * 
 from product 
where product.price>100 
limit 10) 
 join place 
   on product.id=place.productid 
  and place.city=1100

正确一(required:true):

models.product.findAll({
    where: ["price>=?", 100 ],
    include: [{
        model:models.product,
        where: { city:1100 },
        required:true  //inner join方式
    }],
    limit:10,
})

// 结果:
select product.*,place.* 
  from product 
  join place 
    on product.id=place.productid 
   and place.city=1100 
 where product.price>100 
 limit 10

正确二(subQuery:false):

// 备注:这样对于只含一个include关联的查询倒是问题不大,如果include多个对象,关联的对象有1对多,多对多的关系,就不好控制了。
models.product.findAll({
    where: ["price>=?", 100 ],
    include: [{
        model:models.product,
        where: { city:1100 }
    }],
    limit:10,
    subQuery:false   //不让在子查询里分页,全局处理
})

相关文章

网友评论

      本文标题:sequelize关联查询的分页问题,join,limit

      本文链接:https://www.haomeiwen.com/subject/wzhfuqtx.html