mysql 多表查询

合并结果集 UNION、UNION ALL

把两条SELECT结果集合并显示,被合并的两个数据集必须所有列数,列类型全部一致才会合并。
UNION 合并时去除重复记录。
UNION ALL 合并时不去除重复记录。

 多表联查(跨表查询)

使主键与外键保持一致。

去除笛卡尔积
SELECT * from student,score where student.id=score.sid

连接查询

1、内连接(查询两张表的共有部分

select * from a inner join b on a.id=b.id;
select * frrom a join b on a.id=b.id; #inner join 可以省略为 join
其效果等同于 select * from a,b where a.id=b.id;
SELECT sc.id,st.name as '姓名',sc.km, '科目',sc.score '分数' from student st INNER JOIN score sc ON st.id=sc.sid  WHERE sc.score>80

2、左连接(把左边表的内容全部查出,右边表只查出满足条件的记录

SELECT * from person p LEFT JOIN car c on p.pid=c.c_pid;
查询结果如下图。

首先把person表数据查询显示出来,其次根据条件 p.pid=c.c_pid显示满足条件的数据。
如果select * 全部字段,那么两个表所有字段都会显示出来,(表1字段1,表1字段2……,表1字段n,表2字段1,表2字段2……表2字段n)。

3、右连接(把右边表的内容全部查出,左边表只查出满足条件的记录

SELECT * from person p RIGHT JOIN car c on p.pid=c.c_pid;

 

posted @ 2023-06-16 16:00  系统显示名称已被使用  阅读(68)  评论(0)    收藏  举报