有两张表,user表和job表,表数据如下
这种等同于(交叉查询等于不加on的内连接)
SELECT * FROM `user` , job;sql执行结果:
结论:交叉连接,会产生笛卡尔积。
结论:假如,内连接查询,on条件是A表或者B表的唯一字段,则结果集是两表的交集,不是笛卡尔积。
如果A表有m条记录,m1条符合on条件,B表有n条记录,有n1条符合on条件,则结果集是m1*n1
SELECT * FROM `user` u JOIN job j ON u.valid=j.valid;结论:假如,on条件是表中非唯一字段,则结果集是两表匹配到的结果集的笛卡尔积(局部笛卡尔积) 。
假如A表有m条记录,B表有n条记录,则结果集是m条 SELECT * FROMuser u LEFT JOIN job j ON u.JOB_ID=j.id;
结论:on条件是唯一字段,则结果集是左表记录的数量。
如果A表有m条记录,m1条符合on条件,B表有n条记录,有n1条符合on条件,则结果集是 (m-m1) + m1*n1
SELECT * FROM `user` u LEFT JOIN job j ON u.VALID=j.VALID;结论:左连接非唯一字段,是局部笛卡尔积。
同左连接,这里就不赘述了