1、查询两个表中某个字段相同的记录
select a.peer_id,b.online_num from user_s a,online_num b where a.user_id=b.user_id;
2、使用LEFT JOIN 和RIGHT JOIN 例子 (来源:http://zixun2008.blog.163.com/blog/static/6422126620096810443433/)
left join (左链) right join(右链) inner jion(内联);
我们开始讲解列子的时候,先要三个表:
表t1是会员的名字,级别ID
id name lvid(级别ID)
1 张 2
2 王 3
3 李 1
4 小 5
表t2是会员的级别ID的值(比如1是幼儿园 2是小学生 3是中学生)
lv_id lv(会员级别值)
1 幼儿园
2 小学生
3 中学生
4 高中生
表t3是会员发帖的表,有帖子ID,帖子标题,会员ID,帖子属性(禁止阅读 和 允许阅读)
art_id art_name(帖子标题) h_id (会员ID) art_pr(帖子属性)
1 你 1 0
2 我 3 1
3 他 1 0
4 大家 3 1
三个表都建好啦,我们先看表t1 和 t2 来讲解left join 和 right jion
left join 左连查询 语法是
- <?php ="SELECT t1.id, t1.name, t2.lv FROM t1 LEFT JOIN t2 ON t1.lvid=t2.lv_id" /* while($row=mysql_fetch_array($query)){ print_r($row); /* ?>
- $sql
- 查询结果如下:
- id name lv
- 1 张 小学生
- 2 王 中学生
- 3 李 幼儿园
- 4 小 null
- 可以看出左连查询就是按照左边t1的条件查询,保留t1所有数据,右边表t1没有符合左边表t2的数据为空,PHP打印出的数组是
- */
- }
- 不能直接用print_r(),应为擦和讯出的数组是按照t1表的4个条件查询的单独四个数组,他们不是一个整体的,也就MYSQL单独查询出的4个是一个1维数组,PHP接收默认接收4个1维数组组成一个2为数组,但是没有键值,所以实际是4个1维数组!
- 并且一维数组里面同时有指针和字段的键值,用针号或者用字段值都可以;
- Array ( [0] => 1 [id] => 1 [1] => 张 [name] => 张 [2] => 小学生 [lv] => 小学生 )
- Array ( [0] => 2 [id] => 2 [1] => 王 [name] => 王 [2] => 中学生 [lv] => 中学生 )
- Array ( [0] => 3 [id] => 3 [1] => 李 [name] => 李 [2] => 幼儿园 [lv] => 幼儿园 )
- Array ( [0] => 4 [id] => 4 [1] => 小 [name] => 小 [2] => [lv] => )
- [0]是默认的打印出来的出来的,是MYSQL的
- */
RIGHT JOIN刚好相反
- <?php ="SELECT t1.id, t1.name, t2.lv FROM t1 RIGHT JOIN t2 ON t1.lvid=t2.lv_id" //查询结果如下: id name l v //可以看出左连查询就是按照左边t1的条件查询,保留t2所有数据,t1没有符合的数据为空,PHP打印出的数组是 while($row=mysql_fetch_array($query)){ print_r($row); /* ?>
- $sql
- 3 李 幼儿园
- 1 张 小学生
- 2 王 中学生
- NULL NULL 高中生
- }
- Array ( [0] => 3 [id] => 3 [1] => 李 [name] => 李 [2] => 幼儿园 [lv] => 幼儿园 )
- Array ( [0] => 1 [id] => 1 [1] => 张 [name] => 张 [2] => 小学生 [lv] => 小学生 )
- Array ( [0] => 2 [id] => 2 [1] => 王 [name] => 王 [2] => 中学生 [lv] => 中学生 )
- Array ( [0] => [id] => [1] => [name] => [2] => 高中生 [lv] => 高中生 )
- */