mysql 表查询

来源:互联网 发布:马云淘宝提成怎么算 编辑:程序博客网 时间:2024/06/10 14:48

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 左连查询 语法是

  1. <?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);/* ?>
  2. $sql
  3. 查询结果如下:
  4. id         name           lv
  5. 1              张     小学生
  6. 2              王     中学生
  7. 3              李     幼儿园
  8. 4              小     null
  9. 可以看出左连查询就是按照左边t1的条件查询,保留t1所有数据,右边表t1没有符合左边表t2的数据为空,PHP打印出的数组是
  10. */
  11.                   }
  12. 不能直接用print_r(),应为擦和讯出的数组是按照t1表的4个条件查询的单独四个数组,他们不是一个整体的,也就MYSQL单独查询出的4个是一个1维数组,PHP接收默认接收4个1维数组组成一个2为数组,但是没有键值,所以实际是4个1维数组!
  13.     并且一维数组里面同时有指针和字段的键值,用针号或者用字段值都可以;
  14. Array ( [0] => 1 [id] => 1 [1] => 张 [name] => 张 [2] => 小学生 [lv] => 小学生 )
  15. Array ( [0] => 2 [id] => 2 [1] => 王 [name] => 王 [2] => 中学生 [lv] => 中学生 )
  16. Array ( [0] => 3 [id] => 3 [1] => 李 [name] => 李 [2] => 幼儿园 [lv] => 幼儿园 )
  17. Array ( [0] => 4 [id] => 4 [1] => 小 [name] => 小 [2] => [lv] => )
  18. [0]是默认的打印出来的出来的,是MYSQL的
  19. */




RIGHT JOIN刚好相反
  1. <?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);/* ?>
  2. $sql
  3. 3             李      幼儿园
  4. 1             张      小学生
  5. 2            王      中学生
  6. NULL   NULL     高中生
  7.                   }
  8. Array ( [0] => 3 [id] => 3 [1] => 李 [name] => 李 [2] => 幼儿园 [lv] => 幼儿园 )
  9. Array ( [0] => 1 [id] => 1 [1] => 张 [name] => 张 [2] => 小学生 [lv] => 小学生 )
  10. Array ( [0] => 2 [id] => 2 [1] => 王 [name] => 王 [2] => 中学生 [lv] => 中学生 )
  11. Array ( [0] => [id] => [1] => [name] => [2] => 高中生 [lv] => 高中生 )
  12. */

原创粉丝点击