Skip to content

链式 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").RowRead

OrderByDesc - 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").RowRead

OrderByRaw - 自定义排序子句

语法

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").RowRead

Having - 分组过滤

配合 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") _
    .RowRead

LeftJoin - 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") _
    .RowRead

RightJoin - 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").RowRead

Distinct - 去重查询

语法

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

VB6及其LOGO版权为微软公司所有