inner join on 加条件和where加条件_SQL学习笔记 - GROUP BY / JOIN / UNION

最近在DataCamp上学习SQL(基于PostgreSQL)的课程,本文主要记录自己易记混的点,以便日后参考学习,不做原理讲解。

  1. GROUP BY(分组)一般和聚合函数一起使用,包括COUNT(),AVG(),MAX(),MIN(),SUM();一般跟在FROM后面;SELECT语句中未出现在聚合函数里的列都要出现在GROUP BY。

2. WHERE/ GROUP BY/ HAVING/ ORDER BY 执行顺序

SELECT 

首先WHERE将最原始记录中不满足条件的记录删除(所以应该在where语句中尽量将不符合条件的记录筛选掉,这样可以减少分组的次数),WHERE语句不能用聚合函数

然后通过GROUP BY关键字对数据进行分组 ;

接着根据HAVING关键字后面指定的筛选条件,将分组后不满足条件的记录筛选掉,(HAVING可以用聚合函数,如 HAVING AVG(col) > 10;

最后按照ORDER BY语句进行排序。

WHER子句在聚合前先筛选记录,也就是说作用在GROUP BY和 HAVING子句前;而HAVING子句在聚合后对组记录进行筛选。

3. JOIN

59c6cab7d7e2c2f23a459cd0cf80459c.png

INNER JOIN / JOIN : only includes records in which the key is is both tables.

LEFT JOIN:keeps all of the records in the left table while bringing in missing values for those key field values that don't appear in the right table.

RIGHT JOIN:keeps all of the records in the right table while bringing in missing values for those key field values that don't appear in the left table.

FULL JOIN:combines a LEFT JOIN and a RIGHT JOIN, it will bring in all records from both the left and the right table and keep all of the missing values accordingly.

当用于联结两个表的字段相同时,USING等价于JOIN操作中的ON,如以下2个实例等价:

SELECT a.name, b.age FROM test AS a
JOIN test2 AS b
ON a.id = b.id;等价于SELECT a.name, b.age 
FROM test AS a 
JOIN test2 AS b 
USING(id);

注:细微区别在与,USING(id) 在结果集中只会有一个id列。

4. UNION

2c1fe3cce9bb8af3e990f35caac2b45c.png

UNION:includes every record in both tables but DOES NOT double count those that are in both tables.(包含两个表中的每个记录,但重复的行,最终只会出现一次)

UNION ALL:includes every record in both tables and DOES replicate those are in bot tables.(包括两个表中的每个记录,并且保留重复行)

INTERSECT:results in only those records found in both of the tow tables.(交集,两个集中共同的部分)

EXCEPT:results in only those records in one table BUT NOT the other.(差异,两个集中不重复的部分)

你的点赞是我持续更新的动力~ 谢谢 Thanks♪(・ω・)ノ

其他SQL学习笔记 友情链接:

JessieY:SQL学习笔记 - 窗口函数OVER​zhuanlan.zhihu.com
JessieY:SQL学习笔记 - CTE通用表表达式和WITH用法​zhuanlan.zhihu.com
JessieY:SQL学习笔记 - CASE WHEN THEN​zhuanlan.zhihu.com

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

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

相关文章

Selector 实现原理

转载自 Selector 实现原理概述 Selector是NIO中实现I/O多路复用的关键类。Selector实现了通过一个线程管理多个Channel,从而管理多个网络连接的目的。 Channel代表这一个网络连接通道,我们可以将Channel注册到Selector中以实现Selector对其的管理。一个C…

转: 深入浅出-网络七层模型

转自 深入浅出-网络七层模型 - sunsky303 - 博客园引言 今天回顾一下--网络七层模型&&网络数据包 网络基本概念 OSI模型 OSI 模型(Open System Interconnection model)是一个由国际标准化组织&#https://www.cnblogs.com/sunsky3…

date转timestamp格式_技术分享 | MySQL:timestamp 时区转换导致 CPU %sys 高的问题

作者:高鹏文章末尾有他著作的《深入理解 MySQL 主从原理 32 讲》,深入透彻理解 MySQL 主从,GTID 相关技术知识。本文为学习记录,可能有误请谅解。本文建议PC端观看,效果更佳。这个问题是一个朋友遇到的风云&#xff0c…

2021年最新springcloud配置中心不生效的版本原因

想直接看结论请到最下面,中间是我的纠错细节 实名吐槽一波cloudAlibaba文档。 github上的官方文档明明白白写着: 2.2.X版本适用于Springboot 2.2.X 彳亍! 于是我将原本的2.6.0版本改成了SpringBoot 2.2.4Release,然后启动报错&a…

python爬新闻并保存csv_用python爬取内容怎么存入 csv 文件中

小白一个,爬取豆瓣电影250作为练习,想把爬取的内容用csv存储,想存但是不知道怎么自己原来代码拼接在一起。 ps:非伸手党,查阅了官方文档,也做了csv读写的练习,就是拼不到一起,不知道该怎么改。求…

idea部署springboot项目到外部tomcat

【README】 本文旨在记录idea部署springboot项目到外部tomcat的步骤; 第一次部署会踩很多坑儿,多查google,多重试; 第一次部署,不建议手动录入依赖,因为有可能遗漏;而且网络上资料很多但也很…

生成configDataContextRefres失败:Error creating bean with name ‘configDataContextRefresher‘

被这个问题折磨了很久,本人解决方法如下,奉劝一句,该看的官方文档还是要看,但是千万别傻傻地照做! 首先编写bootstrap.properties,往里写入: 这些基础配置 然后检查自己是否引入了这个依赖&am…

python怎么用for循环找出最大值_用for循环语句写一个在输入的十个数字中求最大和最小值的python程序应该怎么写?...

“在输入的十个数字中求最大和最小值的 python 代码”这个需求,在不同时间来看,解题思路不同,所需要的 python 知识点不同。 作为萌新的我,为此特意整理了 3 种解法,以及相应的知识点笔记。 解法A:不使用列…

(转)mysql查看连接客户端ip和杀死进程

转自: mysql : show processlist 详解 - _小豪豪 - 博客园最近排查一些MySQL的问题,会经常用到 show processlist,所以在这里把这个命令总结一下,做个备忘,以备不时只需。 首先是几条常用的SQL。 1、按客户…

Java NIO学习笔记之图解ByteBuffer

转载自 Java NIO学习笔记之图解ByteBuffer ByteBuffer前前后后看过好几次了,实际使用也用了一些,总觉得条理不够清晰。 《程序员的思维修炼》一本书讲过,主动学习,要比单纯看资料效果来的好,所以干脆写个详细点的文章来…

小小涉及OpenFeign原理:Could not extract response: no suitable HttpMessageConverter found for response type

一、问题解释(想看总结的去最下面) org.springframework.web.client.UnknownContentTypeException: Could not extract response: no suitable HttpMessageConverter found for response type [class XXX] and content type [XXX;XXX]凡是报这个错误&am…

apache shiro怎么升级_Springboot整合Shiro之授权

第二条为推广文章,阅读一次0.3kuai,收入用于网站服务器及资源索取。Shiro是我们常用的一个权限管理框架,本文的重点是来介绍下在SpringBoot环境下我们怎么来使用Shiro。一、添加相关依赖本案例中我们使用SpringDataJPA和Thymeleaf来配合讲解&…

转: 虚拟IP(VIP)原理

转自: 虚拟IP(VIP)原理_海阔天空sky的博客-CSDN博客_vip 虚拟ip原理高可用性HA(High Availability)指的是通过尽量缩短因日常维护操作(计划)和突发的系统崩溃(非计划)所…

NIO学习–缓冲区

转载自 NIO学习–缓冲区Buffer其实就是是一个容器对象,它包含一些要写入或者刚读出的数据。在NIO中加入Buffer对象,体现了新库与原I/O的一个重要区别。在面向流的I/O中,您将数据直接写入或者将数据直接读到Stream对象中。 在NIO库中&#xff…

谷粒商城RabbitMQ设计思想详解:消息队列双重保险设计

前言 上来先放一张设计图,看这篇文章的前提是一定得写过或者了解这段业务,不然会看不懂,我下面将会给出我的理解,尽量让大家明白 设计思想 TransactionalOverridepublic SubmitOrderResponseVo submitOrder(OrderSubmitVo vo) {…

java restful接口开发实例_实战:基于Spring Boot快速开发RESTful风格API接口

写在前面的话这篇文章计划是在过年期间完成的,示例代码都写好了,结果亲戚来我家做客,文章没来得及写。已经很久没有更新文章了,小伙伴们,有没有想我啊。言归正传,下面开始,今天的话题。目标写一…

转:elasticsearch nested嵌套查询

转自: 【弄nng - Elasticsearch】DSL入门篇(七)—— Nested类型查询,聚合_司马缸砸缸了-CSDN博客文章目录1. nested query2. nested 对象聚合项目推荐nested类型就是为了解决object类型在对象数组上丢失关联性的问题的&#xff0…

谷粒商城RabbitMQ锁库存逻辑详解--新理解(长文警告)

前言 不废话,上来就说,代码我会放挺多,写过这个项目的自然能懂,如果真的像理解的请认真看哦 分析 /*出现的问题:扣减库存成功了,但是由于网络原因超时,出现异常,导致订单事务回滚&…

NIO学习–核心概念与基本读写

转载自 NIO学习–核心概念与基本读写这两天花了时间学习了java的nio,看的书是Ron Hitchens著的 《Java NIO》,总的来说,这本书真的写的非常好,而且整本书将java nio的内容从底层讲了个遍,书不厚,但是确实值…

python3安装mysql模块_Python安装MySQL库详解,步骤及错误的解决方法

前面我们介绍的Python网络爬虫通常将抓取的数据存储至TXT或CSV文件,而当数据量增加之时,就需要将其存储至本地数据库了。Python访问数据库需要对应的接口程序,我们可以把接口程序理解为Python的一个模块,它提供了数据库客户端的接…