1 嵌套查询
select*FROM 父表
WHERE 相同列 IN(SELECT 相同列 FROM 子表)--1.子表在父表中存在的数据SELECT*FROM 父表
WHERE 相同列 NOTIN(SELECT 相同列 FROM 子表)--2.子表不在附表中存在的数据--说明:附带属性:用相同字段连接,通过子句属性,显示父句中匹配的数据2 链接查询
SELECT*FROM 表1AS a FULLJOIN 表2AS b --1.两表全部连接,包括空值 ON a.相同列=b.相同列
SELECT*FROM 表1AS a INNERJOIN 表2AS b --2.两表有效值链接ON a.相同列=b.相同列
SELECT*FROM 表1AS a LEFTJOIN 表2AS b --3.以左表为准,包括空值ON a.相同列=b.相同列
SELECT*FROM 表1AS a RIGHTJOIN 表2AS b --4.以右表为准,包括空值ON a.相同列=b.相同列
SELECT*FROM 表1AS a JOIN 表1AS b --5.自连接,同一列分类排序ON a.相同列=b.相同列
--说明:连表后去掉重复列名:逐个显示列
2 三表父子查询和连接查询架构
1 三表子查询_重复
select*from 表1where 相同列 in(select 相同列
from 表2where 身份证 in(select 相同列
from 表3))2 三表子查询_不重复
select*from 表1where 相同列 in(select 相同列
from 表2where 身份证 notin(select 相同列
from 表3))--说明:三表嵌套,赛选不重复数据,最下一层是not in 上一层是in,这就是一个逻辑反转负负得正的结果 3 三表连接_重复
select*from 表1as a join 表2as b on a.表1相同列 = b.表2相同列
join 表3as c on b.表2相同列 = c.表3相同列
4 三表连接_不重复
select*from 表1as a join 表2as b on a.表1相同列 != b.表2相同列
join 表3as c on b.表2相同列 != c.表3相同列
3 多表简便连接
1 二表简便连接
select*from 表1, 表2where 表1.相同列 = 表2.相同列
2 三表简便连接
select*from 表1 a, 表2 b, 表3 c
where a.身份证号=b.身份证号
and b.参合家庭编号=c.参合家庭编号
--说明:三表连接相同,结果正常显示没毛病,如果是显示三表连接不相同的,那么在连接的 = 号就有一个逻辑关系,类似于负负得正的关系
4 子查询组合连接查询
SELECT*from--1总查询模型(select*--2子查询1from 父表1where 表1相同列 in(select 表1相同列
from 子表1))AS a
JOIN--3表连接名(select*--4子查询2from 父表2where 表2相同列 notin(select 表2相同列
from 子表2))as b
ON a.表1相同列 = b.表2相同列 --5表连接条件
5 多表查询结果处理
--说明:union的功能不仅可以合并相同字段结果,也可以达到去掉重复的结果--说明:字段必须相同1 合并结果:列必须相同
SELECT 列1,列2,列3FROM 数据表 WHEREUNIONSELECT 列1,列2,列3FROM 数据表 WHERE2 结果新建表
SELECT*INTO 新建表名
FROM (SELECT*FROM 表1UNIONSELECT*FROM 表2) AS 新表名
3 批量合并结果
careate view 视图名 asselect*from 表1unionallselect*from 表2......其他所有表
--说明:使用union all 上面不能接别的语句,会报错