实验数据
- beauty表
- boys表
查询两张表(笛卡尔积)
目的: 查询两张表的字段每个女神对应的男朋友的名字, 比如周芷若的男朋友张无忌.
- 用最朴素的查询思想
select name, boyName from beauty, boys;
这里发现问题了, 柳岩有四个男朋友???
分析原因
- 相当于查询了第一个表的第一个字段(柳岩)去找另一个表的所有字段做匹配, 由于没有任何筛选条件都会加入到结果
笛卡尔积
- 由于没有任何条件, 最终结果会是表1行数 x 表2行数, 称为笛卡尔积.
解决方案
- 需要加上条件避免, 比如beauty表的boyfriend_id = boys表的id
测试
查询beauty表和boys表id相同的字段, 由于两个表都有id字段, 因此要给表取上别名, 利用别名.字段作为区分.
select name, boyName from beauty girl, boys boy where girl.boyfriend_id = boy.id;
Mysql 99语法
99年的sql语句, 更进一步给了笛卡尔积的语法称为交叉连接 加入了cross join关键字, 和前面内容的结果一样
select be.name, bo.boyName from beauty be cross join boys bo;