首页 > 数据库 >mysql高级查询

mysql高级查询

时间:2023-04-19 09:36:43浏览次数:38  
标签:group author runoob 高级 查询 tbl mysql JOIN

1、union

联合查询,使用关键字union,其前后为查询字段数相等的select语句。查询结果是先输出前表的行,再输出后表的行。

union后可以使用关键字all或者distinct,分别表示不去重和去重。去重指的是将重复的行只保留最开始的一行,判断依据是前后按序对应的查询字段,只区分字面量,而不关心数据类型。

select ... union select ...

2、order by

排序,使用关键字order by

order by 字段1,字段2;
order by 1,2;

可以使用字段序号替代字段名称,从1开始,超出范围会报错

同时使用多个字段排序,先根据前者进行排列,如果前者无法区分,再看后者

对每个排序字段都可以声明asc|desc,默认是asc升序。

order by是在where之后,limit之前设置和执行。

3、limit

限制输出条目。

limit n,m;
limit m;
limit m offset n;
  • 从n开始,输出m行
  • n为0,表示输出前m行。
  • n或m超出表达范围可以执行,n超出则返回空,m超出则输出n后实际的行

分页查询是一个重要功能,前端x表示页数,从1开始,y表示每页的行数。sql语句为limit (x-1)*y,y

4、group by

4.1 group by

  • group by 后跟分组字段,可以一个,也可以多个
  • group by 和order by在一个select中无法同时使用
  • 查询字段并不要求必须有分组字段,可以是任意,一般会有聚合函数count、sum、max、min或avg
  • group by后可以追加having结构,用于筛选聚合函数条件
select 查询字段,聚合函数 from table_name group by 分组字段 having 聚合函数条件

5、连接

  • INNER JOIN(内连接,或等值连接):获取两个表中字段匹配关系的记录。
  • LEFT JOIN(左连接):获取左表所有记录,即使右表没有对应匹配的记录。
  • RIGHT JOIN(右连接): 与 LEFT JOIN 相反,用于获取右表所有记录,即使左表没有对应匹配的记录。

5.1 内连接

SELECT a.runoob_id, a.runoob_author, b.runoob_count FROM runoob_tbl a INNER JOIN tcount_tbl b ON a.runoob_author = b.runoob_author;
SELECT a.runoob_id, a.runoob_author, b.runoob_count FROM runoob_tbl a, tcount_tbl b WHERE a.runoob_author = b.runoob_author;

说明:表a的某字段x和表b的某字段关联y,x与y存在相同值的集合k,x=值k1在表a中有a1行,y=值k1在表b中有b1行,即值k1对应a1*b1行交叉组合的临时数据。

类似的k2,k3…,依次组合,合并为一张表。

5.2 左连接

SELECT a.runoob_id, a.runoob_author, b.runoob_count FROM runoob_tbl a LEFT JOIN tcount_tbl b ON a.runoob_author = b.runoob_author;

说明:表a的某字段x和表b的某字段关联y,x在表a具有n种值,y在表b具有m种值,按照x值依次判断处理。如果x值在表b中的y也存在,则与内连接一致。如果x值在表b中的y不存在,则视为表b中有一行字段值全为null的数据与x进行匹配。

依次组合,合并为一张表。

5.3 右连接

和左连接类似,只是判断时以表b为准。

标签:group,author,runoob,高级,查询,tbl,mysql,JOIN
From: https://www.cnblogs.com/wd404/p/17332090.html

相关文章

  • mysql事务
    1、介绍MySQL事务主要用于处理操作量大,复杂度高的数据。在MySQL中只有使用了Innodb数据库引擎的数据库或表才支持事务。事务处理可以用来维护数据库的完整性,保证成批的SQL语句要么全部执行,要么全部不执行。事务用来管理insert,update,delete语句2、事务条件ACID......
  • mysql之alter命令
    #删除表字段,需要表中字段数大于1ALTERTABLEtestalter_tblDROPi;#添加字段,添加到末尾ALTERTABLEtestalter_tblADDiINT;#添加字段到首位ALTERTABLEtestalter_tblADDiINTFIRST;#添加字段到某字段之后ALTERTABLEtestalter_tblADDiINTAFTERc;#定义......
  • mysql管理
    MySQL管理|菜鸟教程(runoob.com),在下方笔记有大量有用内容。1、启动管理1.1windows1.2linux(这里安装的是mariadb)systemctlstartmariadb#启动systemctlrestartmariadb#重启systemctlstopmariadb#停止systemctlstatusmariadb#查看运行状态systemctlenabl......
  • mysql索引与主键、外键
    1、介绍优点:索引可以大大提高mysql的检索速度。缺点:虽然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行INSERT、UPDATE和DELETE。因为更新表时,MySQL不仅要保存数据,还要保存一下索引文件。建立索引会占用磁盘空间的索引文件。2、分类2.1普通索引#基础创建CREA......
  • mysql函数
    1、介绍mysql函数分为四大类:字符串函数、数值函数、日期函数和高级函数。MySQL函数|菜鸟教程(runoob.com)2、常用一般函数时间:now()#返回当前日期和时间2018-09-1920:57:43curtime()#返回当前时间19:59:02current_timestamp()#返回当前日期和时间2018-09-1920:......
  • mysql函数(补充)
    环境:10.4.26-MariaDB1、sleepsleep(n)执行一遍函数,延时n秒如果在where条件中多次需要执行sleep,则多次延时sleep函数返回为false,不论是n是否为0假设设置sleep(100),数据库如实进行了延时n可以设定为小数,最小是0.001,但是这并不是绝对准确2、updatexmlupdatexml(v1,v2,v3......
  • MySQL 主从延迟的常见原因及解决方法
    承蒙大家的支持,刚上市的《MySQL实战》已经跃居京东自营数据库图书热卖榜第1名,收到的反馈也普遍不错。对该书感兴趣的童鞋可通过右边的链接购买。目前,京东自营有活动,只需5折。主从延迟作为MySQL的痛点已经存在很多年了,以至于大家都有一种错觉:有MySQL复制的地方就有主从延......
  • django查询一周内的数据,一月内的数据,一年内的数据
    首先是当前时间的确定,对于年月日,orm模型都有对应的方法直接查询,周是没有方法直接查询的,我是没有找到这个方法,只能间接的查询。cur_time=datetime.datetime.now()#如果数据库保存的是UTC时间,程序不会蹦但是会提示你这不是本地时间now_time_utc=datetime.datetime.utcnow......
  • 完善的科技政策查询系统
    要求:项目功能说明:科技政策查询主界面样式如下图所示主界面主要分成五部分:1、顶部为LOGO区,主要展示科技技术情报研究院的LOGO,并用蓝黑色显示科技政策查询系统。2、第二部分为多条件查询区,主要包括政策图解(按钮式超级链接),查询条件包括政策名称、政策文号、发文机构、全文检索四......
  • Redis高级 哈希类型、列表类型、集合类型、有序集合(zset)、慢查询、pipeline与事务
    哈希类型###1---hget,hset,hdelhgetkeyfield#获取hashkey对应的field的value时间复杂度为o(1)hsetkeyfieldvalue#设置hashkey对应的field的value值时间复杂度为o(1)hdelkeyfield#删除hashkey对应的field的值时间复杂度为o(1)#测试hsetuser:1:infoage......