好象不大一样~~ LEFT JOIN :
首先取出 table1 表中所有数据,然后再加上与 table1 , table2 匹配的的数据 ,
首先取出 table1 表中所有数据,然后再加上与 table1 , table2 匹配的的数据 ,
解决方案 »
- 使用php技术制做WAP网页,请问使用什么工具在自己电脑上设计和测试
- 站内搜索
- IIS7.5 设置PHP以CGI模式运行(php5)
- 我想取出本周的数据怎么取呢?
- 文本数据库多维数组排序~~急!!!
- 紧急求助:如何用mysql命令行工具运行sql脚本文件??
- 当我再PHP中使用window.open()时,文件被打开了两次,请各位帮忙看一下。
- setcookie参数domain域的问题
- 请问怎样让一个程序执行到某个地方暂停
- windows系统里cmd执行thinkphp,对应到模块控制器方法没有输出,这个怎么解决?
- split函数疑问
- 数据库连接过多的问题mysql_pconnect(): Too many connections in ……
和
select * from table1 inner JOIN table2 ON table1.id = table2.id
结果是一样的是
看了这个之后你就会明白了!
慢慢看哈!呵呵~~因为只有看了例子才能明白区别!
我又不能直接复制,抹杀作者的功绩!
基本的sql知识
在数据完全匹配时,返回的结果是一样的,为全部
不完全匹配时,inner join返回交集,left join返回所有的t1以及和t1匹配的t2中的内容
极限情况(t1和t2中不存在id相等的记录)时,inner join返回空集,而left join返回t1
select * from table1 LEFT JOIN table2 ON table1.id = table2.id加入现在有两个表customer(记录客户的相关信息),另外一个表customer_re(记录某个客户的备注,因为不是每个客户都需要备注,所以备注没有建立在customer里面)。customer有以下字段:id, name, tel, address
customer_re有以下字段:id, re
customer 有以下数据:
1 a 22668856 北京
2 b 22265842 上海
3 c 24567633 天津customer 有以下数据:
2 有病毒在他的计算机。假如使用select * from customer c, customer_re cr where c.id = cr.id 得到的结果是id name tel address id re
2 b 22265842 上海 2 有病毒在他的计算机。
假如使用select * from customer c left join customer_re cr on c.id = cr.id 得到的结果是id name tel address id re
1 a 22668856 北京 null null
2 b 22265842 上海 2 有病毒在他的计算机。
3 c 24567633 天津 null null看见不同没有?left join 是以左边的表为标准的,就是左边的表所有行都列出后,然后以它的行为标准,加入右边的表没有匹配的行,则数据显示为null。所以假如我们有客户,但是想列出所有的客户的信息和备注,我们就用left join语法。假如我们只想列出有备注的客户资料,那么我们就使用where
说的真详细,学习