ORM
组件目前支持常见的三种语法的子查询:Where
子查询、Having
子查询及From
子查询。
我们可以在Where
条件中使用子查询语句,示例:
// 获取默认配置的数据库对象(配置名称为"default")
db := g.DB()
db.Model("orders").Where("amount > ?", db.Model("orders").Fields("AVG(amount)")).Scan(&orders)
// SELECT * FROM "orders" WHERE amount > (SELECT AVG(amount) FROM "orders")
我们可以在Having
条件中使用子查询语句,示例:
subQuery := db.Model("users").Fields("AVG(age)").WhereLike("name", "name%")
db.Model("users").Fields("AVG(age) as avgage").Group("name").Having("AVG(age) > ?", subQuery).Scan(&results)
// SELECT AVG(age) as avgage FROM `users` GROUP BY `name` HAVING AVG(age) > (SELECT AVG(age) FROM `users` WHERE name LIKE "name%")
我们可以在使用Model
方法创建模型时使用子查询语句,示例:
db.Model("? as u", db.Model("users").Fields("name", "age")).Where("age", 18).Scan(&users)
// SELECT * FROM (SELECT `name`,`age` FROM `users`) as u WHERE `age` = 18
subQuery1 := db.Model("users").Fields("name")
subQuery2 := db.Model("pets").Fields("name")
db.Model("? as u, ? as p", subQuery1, subQuery2).Scan(&users)
// SELECT * FROM (SELECT `name` FROM `users`) as u, (SELECT `name` FROM `pets`) as p
基本介绍goframe框架提供了功能强大、使用便捷、灵活易扩展的数据/表单校验组件,由gvalid组件实现。gvalid组件实现...
ASP.NET TextBox MaxLength 属性 TextBox 控件定义和用法 MaxLength 属性用于设置或返回 TextBox 控件中所允许的最大字符数。 语...
ASP.NET BorderColor 属性 Style 控件定义和用法 BorderColor 属性用于设置或返回控件的边框颜色。 语法asp:webcontrol id="id" ...