首页 > 其他 > 详细

多表查询

时间:2019-10-22 13:16:30      阅读:52      评论:0      收藏:0      [点我收藏+]

一、聚合函数与分组

分组需要在mysql的配置文件中sql_mode加入ONLY_FULL_GROUP_BY

max()求最大值
min()求最小值
avg()求平均值
sum() 求和
count() 求总个数
group_concat() 连接分组结果

#强调:聚合函数聚合的是组的内容,若是没有分组,则默认一组

# 每个部门有多少个员工
select post,count(id) from employee group by post;
# 每个部门的最高薪水
select post,max(salary) from employee group by post;
# 每个部门的最低薪水
select post,min(salary) from employee group by post;
# 每个部门的平均薪水
select post,avg(salary) from employee group by post;
# 每个部门的所有薪水
select post,sum(age) from employee group by post;

二、多表查询

#语法
SELECT 字段列表
    FROM 表1 INNER|LEFT|RIGHT JOIN 表2
    ON 表1.字段 = 表2.字段;
#分为左表和右表
#左表为多,右表为1;
#左为1表,右为2表

主要是笛卡尔积原理

1、内连接,只连接匹配的行,

select id from t1 inner t2 on t1.id=t2.id;

2、外连接之左连接,优先显示左表的全部信息,不管右表是否为空都会显示

select id from t1 left t2 on t1.id=t2.id;

3、外连接值右连接,优先显示右表的全部信息,不管左表对应的信息是否为空都会显示

select id from t1 right t2 on t1.id=t2.id;

4、全外连接,显示左边两个表全部记录 :直接记 union all

select * from t1 left join t2 on t1.id=t2.id union all select * from t1 right join t2 on t1.id=t2.id;

三、子查询

#1:子查询是将一个查询语句嵌套在另一个查询语句中,即:将一条sql语句查询的结果作为下一条查询语句的条件
#2:内层查询语句的查询结果,可以为外层查询语句提供查询条件。
#3:子查询中可以包含:IN、NOT IN、ANY、ALL、EXISTS 和 NOT EXISTS等关键字
#4:还可以包含比较运算符:= 、 !=、> 、<等

多表查询

原文:https://www.cnblogs.com/whileke/p/11718704.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!