Mysql 多表查询

合并结果集

UNION:去重
UNION ALL:不去重

要求两个结果集的列数和字段类型必须相同,不然会报错

连接查询

笛卡尔积

A={a,b},B={0,1,2} ==> {(a,0),(a,1),(a,2),(b,0),(b,1),(b,2)}

SELECT * FROM students,score;   // 学生表的每条数据会合并分数表的每条数据,形成一条新的数据

99 连接

去笛卡尔积,查交集。使用两张表的公共字段(主外键),原理是在笛卡尔积中进行筛选,条件就是公共字段一致,如果一致就留下,不一致就丢掉

SELECT * FROM students st,score sc WHERE st.id = sc.sid;

内连接

和 99 连接效果一致,也是去笛卡尔积,查交集

SELECT * FROM students st [INNER] JOIN score sc ON st.id = sc.sid WHERE sc.score >= 60;

左连接

交集+左表独有数据

SELECT * FROM students st LEFT JOIN score sc ON st.id = sc.sid;

右连接

交集+右表独有数据

SELECT * FROM students st RIGHT JOIN score sc ON st.id = sc.sid;

posted @ 2018-08-17 18:54  huanggy  阅读(322)  评论(0编辑  收藏  举报