链式 CURD - 排序、分组、连接与选择
排序、分组、连接、选择方法均返回 cDataBase 对象,可自由叠加组合。详细架构参见 链式 CURD 概述。
排序方法
OrderBy - ASC 排序
可多次调用叠加多个排序字段。
语法
vb
Function OrderBy(ByVal FieldName As String) As cDataBase示例
vb
' 单字段排序
db.Table("users").OrderBy("age").RowRead
' 多字段排序(先按年龄,再按姓名)
db.Table("users").OrderBy("age").OrderBy("name").RowReadOrderByDesc - DESC 排序
语法
vb
Function OrderByDesc(ByVal FieldName As String) As cDataBase示例
vb
' 按ID降序
db.Table("users").OrderByDesc("id").RowRead
' 混合排序(年龄降序,姓名升序)
db.Table("users").OrderByDesc("age").OrderBy("name").RowReadOrderByRaw - 自定义排序子句
语法
vb
Function OrderByRaw(ByVal RawClause As String) As cDataBase示例
vb
' 复合排序
db.Table("users").OrderByRaw("age DESC, name ASC").RowRead
' 函数排序
db.Table("users").OrderByRaw("RAND()").RowRead分组方法
GroupBy - 分组查询
可多次调用叠加多个分组字段。
语法
vb
Function GroupBy(ByVal FieldName As String) As cDataBase示例
vb
' 按部门分组
db.Table("users").Columns("dept,COUNT(*) AS cnt").GroupBy("dept").RowRead
' 多字段分组
db.Table("orders").Columns("year,month,SUM(amount) AS total").GroupBy("year").GroupBy("month").RowReadHaving - 分组过滤
配合 GroupBy 使用,过滤分组后的结果。
语法
vb
Function Having(ByVal Condition As String) As cDataBase示例
vb
' 统计人数大于5的部门
db.Table("users").Columns("dept,COUNT(*) AS cnt").GroupBy("dept").Having("cnt>5").RowRead
' 统计平均薪资大于8000的部门
db.Table("users").Columns("dept,AVG(salary) AS avg_sal").GroupBy("dept").Having("avg_sal>8000").RowRead连接方法
Join - INNER JOIN
语法
vb
Function Join(ByVal TableName As String, ByVal OnCondition As String) As cDataBase示例
vb
' 内连接
db.Table("orders") _
.Columns("orders.id,users.name,orders.amount") _
.Join("users", "orders.user_id=users.id") _
.RowReadLeftJoin - LEFT JOIN
语法
vb
Function LeftJoin(ByVal TableName As String, ByVal OnCondition As String) As cDataBase示例
vb
' 左连接(保留所有订单,即使没有匹配的用户)
db.Table("orders") _
.Columns("orders.id,users.name") _
.LeftJoin("users", "orders.user_id=users.id") _
.OrderByDesc("orders.id") _
.RowReadRightJoin - RIGHT JOIN
语法
vb
Function RightJoin(ByVal TableName As String, ByVal OnCondition As String) As cDataBase示例
vb
' 右连接
db.Table("orders") _
.RightJoin("users", "orders.user_id=users.id") _
.RowRead多表连接叠加
vb
' 三表连接
db.Table("orders") _
.Columns("orders.id,users.name,products.title") _
.Join("users", "orders.user_id=users.id") _
.Join("products", "orders.product_id=products.id") _
.Where("orders.amount>?", 100) _
.OrderByDesc("orders.id") _
.RowRead查询列选择方法
Columns - 指定查询列
默认 SELECT *,调用后改为指定列。支持逗号分隔字符串或多参数形式。
注意:方法名使用
Columns而非Select,避免与 VB6 保留字Select Case冲突。
语法
vb
Function Columns(ParamArray Cols() As Variant) As cDataBase示例
vb
' 字符串形式
db.Table("users").Columns("id,name,age").RowRead
' 多参数形式
db.Table("users").Columns("id", "name", "age").RowRead
' 配合聚合函数
db.Table("users").Columns("dept,COUNT(*) AS cnt").GroupBy("dept").RowRead
' 配合 JOIN
db.Table("orders").Columns("orders.id,users.name").Join("users", "orders.uid=users.id").RowReadDistinct - 去重查询
语法
vb
Function Distinct() As cDataBase示例
vb
' 查询不重复的部门
db.Table("users").Distinct.Columns("dept").RowRead
' 查询不重复的城市
db.Table("users").Distinct.Columns("city").Where("age>?", 18).RowRead最后更新: 2026-06-26