上一篇文章讲解“数据库查询构造器-链式操作的方法二”,本篇文章讲解“数据库查询构造器-链式操作的方法三”。
九、group
GROUP方法通常用于结合合计函数,根据一个或多个列对结果集进行分组。
group方法只有一个参数,并且只能使用字符串。
1)对一个字段进行分组
在Index控制器中,新建groupQuery方法:
预览:
2)对多个字段进行分组
修改Index控制器下的groupQuery方法:
预览:
十、having
HAVING方法用于配合group方法完成从分组的结果中筛选(通常是聚合条件)数据。
having方法只有一个参数,并且只能使用字符串。
在Index控制器中,新建hQuery方法:
预览:
十一、join
JOIN方法用于根据两个或多个表中的列之间的关系,从这些表中查询数据。
1. join的类型
join通常有下面几种类型,不同类型的join操作会影响返回的数据结果。
2. join的参数
1)join
要关联的(完整)表名以及别名
2)condition
关联条件。可以为字符串或数组,为数组时每一个元素都是一个关联条件。
3)type
关联类型。可以为:'INNER'、'LEFT'、'RIGHT'、'FULL',不区分大小写,默认为'INNER'。
3. join的使用
1)join的基本使用
在Index控制器中,新建joinQuery方法:
预览:
2)join的其他方式(默认为inner join)
修改Index控制器下的joinQuery方法:
预览:
3)表名为子查询
修改Index控制器下的joinQuery方法:
预览:
十二、union
UNION操作用于合并两个或多个SELECT语句的结果集。
1)union的基本使用
在Index控制器中,新建unQuery方法:
预览:
2)union的闭包用法
修改Index控制器下的unQuery方法:
预览:
注意:
1. 或者如下方式:
Db::field('name')
->table('think_user')
'SELECT name FROM think_type',
'SELECT name FROM think_test',
])
->select();
3)unionAll方法
修改Index控制器下的unQuery方法:
预览:
注意:
1. 或者如下方式:
Db::field('name')
->table('think_user')
'SELECT name FROM think_user_1',
'SELECT name FROM think_user_2'],
true)
->select();
2. 每个union方法相当于一个独立的SELECT语句。
3. UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。
十三、distinct
DISTINCT方法用于返回唯一不同的值,去重复。
例如:数据库表中有以下数据
在Index控制器中,新建disQuery方法,不使用distinct方法,正常查询
预览:
修改Index控制器下的disQuery方法,将重复的数据去重复
不使用distinct方法时,查询重复数据会正常显示,如果要将重复数据去除,需要使用distinct方法。
预览:
注意:
1. distinct方法的参数是一个布尔值。
ThinkPHP5连载为卓象程序员原创,转载请联系卓象程序员
关注卓象程序员,定期发布技术文章
下一篇讲解“查询构造器-链式操作的方法四”
领取专属 10元无门槛券
私享最新 技术干货