美文网首页
【GOLANG】GORM组合查询,构建复杂查询

【GOLANG】GORM组合查询,构建复杂查询

作者: 小伙纸2022 | 来源:发表于2022-11-06 20:15 被阅读0次

    组合

    使用 Group 条件可以更轻松的编写复杂 SQL

    db.Where("pizza = ?", "pepperoni").Where(db.Where("size = ?", "small").Or("size = ?", "medium"))
    

    形成的SQL语句:

    WHERE pizza = "pepperoni" AND (size = "small" OR size = "medium")
    

    子查询

    子查询可以嵌套在查询中,GORM 允许在使用 *gorm.DB 对象作为参数时生成子查询

    db.Where("amount > (?)", db.Table("orders").Select("AVG(amount)")).Find(&orders)
    

    形成的SQL语句:

    SELECT * FROM "orders" WHERE amount > (SELECT AVG(amount) FROM "orders");
    

    From 子查询

    GORM 允许您在 Table 方法中通过 FROM 子句使用子查询,例如:

    subQuery1 := db.Model(&User{}).Select("name")
    subQuery2 := db.Model(&Pet{}).Select("name")
    db.Table("(?) as u, (?) as p", subQuery1, subQuery2).Find(&User{})
    

    形成的SQL语句:

    SELECT * FROM (SELECT `name` FROM `users`) as u, (SELECT `name` FROM `pets`) as p
    

    记录一下:引用自GORM

    相关文章

      网友评论

          本文标题:【GOLANG】GORM组合查询,构建复杂查询

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