美文网首页
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