- 先确定数据要用到哪些表。
- 将多个表先通过笛卡尔积变成一个表。
- 然后去除不符合逻辑的数据(根据两个表的关系去掉)。
- 最后当做是一个虚拟表一样来加上条件即可。
注意:列名最好使用表别名来区别。
笛卡尔积
Demo:
左,右连接,内,外连接
l 内连接:
要点:返回的是所有匹配的记录。
1
|
select * from a,b where a.x = b.x ////内连接
|
l 外连接有左连接和右连接两种。
要点:返回的是所有匹配的记录 外加 每行主表外键值为null的一条记录。辅表所有列为null值。
1
2
3
|
select * from a left join b on a.x=b.x order by a.x //左外连接或称左连接
select * from a right join b on a.x=b.x order by a.x //右外连接或称右连接
|
select子句顺序
子句 | 说明 | 是否必须使用 |
select | 要返回的列或表示式 | 是 |
form | 从中检索数据的表 | 仅在从表选择数据时使用 |
where | 行级过滤 | 否 |
group by | 分组说明 | 仅在按组计算聚集时使用 |
having | 组级过滤 | 否 |
order by | 输出排序顺序 | 否 |
limit | 要检索的行数 | 否 |
到此这篇关于浅谈MySQL使用笛卡尔积原理进行多表查询的文章就介绍到这了,更多相关MySQL的多表查询内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!
原文链接:https://www.cnblogs.com/Toolo/p/3634563.html