zhuce 发表于 2016-10-22 00:31:53

MySQL的多表查询(笛卡尔积原理)

 


[*]先确定数据要用到哪些表。
[*]将多个表先通过笛卡尔积变成一个表。
[*]然后去除不符合逻辑的数据(根据两个表的关系去掉)。
[*]最后当做是一个虚拟表一样来加上条件即可。
  
  注意:列名最好使用表别名来区别。
  
  
笛卡尔积
  

  
  
  Demo:

  
左,右连接,内,外连接
  l             内连接:
  要点:返回的是所有匹配的记录。

[*]2.         select * from a,b where a.x = b.x                                                 ////内连接
  l             外连接有左连接和右连接两种。
  要点:返回的是所有匹配的记录 外加 每行主表外键值为null的一条记录。辅表所有列为null值。

[*]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
  要检索的行数
  否
页: [1]
查看完整版本: MySQL的多表查询(笛卡尔积原理)