12月2日:thinkphp中的链式操作

news2024/11/24 5:38:15

补充内容:

今天我们就来聊聊limit和page的区别以及group by需要注意的点,where和having的区别

limit和page

区别

Limit

        限制查询数量,在进行分页查询的时候用的最多,但是limit在查询限制中的索引值是从0开始的,limit(0,10)代表从第1条数据开始,限制10条数据。

public function limitTest(){
        //limit
       //原生语句:select id,name from bro_demo limit(0,10) where status = 'normal';
        $result = Db::name('demo')
            ->field('id,name')
            ->where('status','=','normal')
            ->limit(0,10)
            ->select();
        dump($result);
    }

Page

        是thinkphp中自带的人性化分页查询,page方法不需要你自己计算每页的第一条数据,你只需要将每页页数和每页显示多少条数据交给他,他会自动帮你计算每页的第一条数据,例如:page(1,10)代表第一页显示10条数据。

public function pageTest(){
        //page
        //原生语句:select id,name from bro_demo page(1,10) where status = 'normal';
        $result = Db::name('demo')
            ->field('id,name')
            ->where('status','=','normal')
            ->page(1,10)
            ->select();
        dump($result);
    }

group by 分组

GROUP方法也是连贯操作方法之一,通常用于结合合计函数,根据一个或多个列对结果集进行分组 。group方法只有一个参数,并且只能使用字符串。

重点

//group by分组
    public function groupTest(){
        //原生语句:select id,name,max(score) from bro_score group(user_id);
        $result = Db::name('score')
            ->field('id,name,max(score)')
            ->group('user_id')
            ->select();
        dump($result);
    }
group分两组,组中人员名称相同以最高分数为界限进行查询
group分两组,组中人员名称不同,选取最高分数后,查询出每组第一条数组赋值

having与where(重点)

区别

(1)where:

  • 是作用在查询结果进行分组之前,过滤掉不符合条件的数据。
  • where中不能包含聚合函数。(注意是:where后面子句不能有聚合函数,而在含有where中可以使用聚合函数)
  • 作用在group by和having字句前
  • 是作用于对表与视图

(2)having:

  • 是作用在查询结果分组之后,筛选满足条件的组,过滤掉数据。

  • 通常跟聚合函数一起使用。

  • having子句在聚合后对组记录进行筛选。

  • 是作用于分组

 //having和where的区别
    public function havingTest(){
        //where查询
        //原生语句: SELECT `id`,`name` FROM `bro_score` WHERE ( score>40 )
        $result = Db::name('score')
            ->field('id,name')
            ->where('score>40')
            ->group('user_id')
            ->select();
        dump($result);
        //having
        //原生语句:SELECT name,max(score) FROM `bro_score` GROUP BY `user_id` HAVING count(score)>=2
        $result = Db::name('score')
            ->field('name,max(score)')
            ->group('user_id')
            ->having('count(score)>=2')
            ->select();
        dump($result);
    }

执行顺序

当一个查询语句同时出现了where,group by,having,order by的时候,执行顺序和编写顺序是:

1.执行where()方法对全表数据做筛选,返回第1个结果集。

2.针对第1个结果集使用group by分组,返回第2个结果集。

3.针对第2个结果集中的每1组数据执行select()方法,有几组就执行几次,返回第3个结果集。

4.针对第3个结集执行having()方法进行筛选,返回第4个结果集。

5.针对第4个结果集使用order by排序。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/53613.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于Java+Springboot+Vue+elememt疫情返乡人员管控系统设计实现

博主介绍:✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取联系🍅精彩专栏推荐订阅收藏👇&…

一文搞懂如何学习Android内部命令行工具集合

目录 1.安卓命令工具集 2.命令如何使用(举例) 2.1 am命令使用 2.2 dumpsys 命令使用 2.3 wm命令用法 2.4 rm命令的用法 2.5 logcat 命令的用法 2.6 cat 命令的用法 3.个人如何学习 3.1 推荐学习方法一 3.2 方法二 1.安卓命令工具集 安卓支持…

JMeter入门教程(7) --思考时间

1.人物背景 在JMeter脚本中,思考时间使用定时器模拟实现的 2.任务目标 掌握基于JMeter性能测试脚本开发——思考时间 3.任务实操 3.1 固定定时器 右击取样器,选择“添加 > 定时器 > 固定定时器,如图示: 2.固定定时器页…

手机无线耳机什么牌子的好用?2022好用的无线蓝牙耳机排行榜

现如今的蓝牙耳机市场中有着多种机型,不同功能,不同价格的蓝牙耳机数不胜数,一部手机、一副耳机似乎已经成为了人们外出的搭配。那么手机无线耳机什么牌子的好用呢?下面我来给大家推荐几款好用的无线蓝牙耳机,大家可以…

团队协作利器----API接口Eolink

本文目录:一、初识Eolink1.什么是Eolink2.我与Eolink的故事二、Eolink突出特点----团队协作协同工作分享协作支持所有类型API文档、测试方便导出接口文档方便查看历史记录三、Eolink优势总结前言: hello大家好,我是Dream,在我们的…

安卓中adb命令工作的底层原理及使用举例

目录 1. adb安卓调试桥 2.adb的组成 3.adb命令的使用举例: 3.1什么是应用包?什么是应用界面? 3.2 adb 命令如何获取应用应用包名和应用界面名? 1. adb安卓调试桥 adb的全称为Android Debug Bridge,就是起到调试桥的作用。通过adb我们可以在Eclipse中方便通过…

c程序从编译开始到运行结束的过程

重温c语言 我们在linux平台下建立一个a.c文件,程序很简单&#xff0c;显示输出Please input your name:&#xff0c;然后让我们输入名字&#xff0c;最后调用了一个子函数输出hello,我们的名字 #include<stdio.h>void hello(char * name);int main(){char name[16]{0};p…

(4E)-TCO-PEG4-acid,1802913-21-8物理性质分享

(4E)-TCO-PEG4-acid物理数据&#xff1a; CAS&#xff1a;1802913-21-8| 中文名&#xff1a;(4E)-反式环辛烯-四聚乙二醇-羧酸 | 英文名&#xff1a; (4E)-TCO-PEG4-acid 结构式&#xff1a; 英文别名&#xff1a; (4E)-TCO-PEG4-COOH TCO4-PEG4-COOH 中文别名&#xff1a…

【Flink】一文解析Flink如何实现状态管理和容错机制

文章目录一 Flink中的状态管理1 有状态的算子和应用程序&#xff08;1&#xff09;算子状态&#xff08;operator state&#xff09;&#xff08;2&#xff09;键控状态&#xff08;keyed state&#xff09;2 状态后端3 选择一个状态后端二 Flink中的容错机制1 一致性检查点&am…

自建传奇2服务器,分享自己架设传奇服务器的详细介绍

我们在经历了太多的传奇私服之后就会有人想要自己搞一个来看看&#xff0c;其实有这样想法的人其实还是很多的&#xff0c;毕竟当一个玩家总没有当一个GM来的实在。于是就有人选择自己去架设传奇私服的服务器&#xff0c;而这个时候我们的信息就能够给这些想要自己当GM的人一个…

uniapp多端问题总结

页面跳转相关 1、页面跳转传参报错 问题&#xff1a; 小程序报错 SyntaxError: Unexpected end of JSON inputat JSON.parse () 原因&#xff1a;是由于JSON.parse无法识别某些url中的特殊字符比如&等特殊符号。解决办法&#xff1a; 原来代码&#xff1a; // 跳转所属专…

【Linux】—一文掌握Linux基本命令(上)

目录lspwdcdtouchmkdirrmdir与rmmantree 的安装cpmvnano的安装catls 语法&#xff1a; ls [选项][目录或文件] 功能&#xff1a;对于目录&#xff0c;该命令列出该目录下的所有子目录与文件。对于文件&#xff0c;将列出文件名以及其他信息。 常用拓展选项&#xff1a; -a 列出…

J-Tech Talk|以型搜型:3D模型表征助力3D神经搜索!

以型搜型指的是 以3D模型搜索3D模型&#xff0c;在对 3D 物体进行模型表征后&#xff0c;通过最近邻搜索得到与之类似的3D物体的结果。Executor-3d-encoder 项目集成了若干个 3D 物体表征模型&#xff0c;开发者可以很方便地对不同的模型进行统一配置、训练和微调。12 月 6 日晚…

网上中国:“云签约”,真方便

文章目录“云签约”&#xff0c;真方便足不出户就能签合同电子签名行业发展迅速确保合同不被篡改“云签约”&#xff0c;真方便 通过线上面签&#xff0c;商品房买卖双方不见面就能完成交易流程&#xff1b;有了电子劳务合同&#xff0c;企业用工实现一键签约&#xff1b;借助…

体验 Node.js 的 net 模块

1. 创建客户端 模拟 http 请求&#xff0c;将接收到的响应体内容原样输出&#xff0c;接收完毕后&#xff0c;关闭连接 1.1 最终效果 接收到的数据&#xff1a; 解析后的数据&#xff1a; 1.2 流程说明 初始化&#xff1a; 创建客户端 const client net.createConnection…

美国高防服务器到底好不好用

对于对安全性配置有较高要求的用户来说&#xff0c;一般的独立服务器似乎并不能满足其需求。他们一般会选择带有DDoS或CC攻击防御功能或者流量清洗功能的高防服务器。而本文所要介绍的美国高防服务器也是众多海内外用户比较青睐的一大产品选择。那么美国高防服务器到底好不好用…

设计原则和设计模式

一&#xff1a;软件设计原则 1.单一职责原则&#xff1a; 有且只有一个原因引起类的变化(类或者接口的职责单一化) 2.里氏替换原则&#xff1a; 子类可以扩展父类的功能,但不能改变父类原有的功能 3.依赖倒置原则&#xff1a; 1.高层模块不应该依赖于底层模块&#xff0c…

机器学习2普通knn算法

文章目录KNN算法-k近邻算法&#xff08;k-Nearest Neighbors&#xff09;前言KNN优点&#xff1a;快捷键&#xff1a;一、普通knn算法是什么&#xff1f;解析&#xff1a;二、普通knn算法基础1.分布解析2.使用pycharm函数封装的形式运行KNN算法3.使用scikit-learn中的knn三、普…

《Redis基础篇》带你走进Redis的世界 ~ ⭐必看必看⭐

文章目录1. NoSQL数据库简介1.1 技术发展1.1.1. Web1.0时代1.1.2 Web2.0时代1.1.3. 解决CPU及内存压力(采用分布式)1.1.4. 解决IO压力1.2. NoSQL数据库1.2.1. NoSQL数据库概述1.2.2 NoSQL适用场景1.2.3 NoSQL不适用场景1.2.4 Memcache1.2.5 Redis1.2.6. MongoDB1.3. 行式存储数…

新的datax启动方式(直接使用java命令启动)

一开始用的python启动 &#xff08;很烦 还得有python环境 但是本着项目上线可以给客户装个python环境 也就用了&#xff09; 后续需要做个客户端 开始呢下载了源码直接再源码中启动(但是多个任务都在一个jvm中 我很抵触这样做) 又研究研究python启动的源码 发现最后还是调用…