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;


浙公网安备 33010602011771号