zoukankan      html  css  js  c++  java
  • mysql join

    JOIN 按照功能大致分为三类:
     inner join(内连接,或等值连接):获取两张表中字段匹配关系的记录(交集)
     left join(左连接):获取左表所有记录,即使右表没有对应匹配的记录
     right join(右连接):与left join相反,用于获取右表所有记录,即使左表没有对应匹配的记录

    1、接下来我们就使用mysql的inner join(也可以省略inner使用join,效果一样),来连接以上两张表来读取A.id字段再B.c_id对应的字段值

    SELECT * FROM ract INNER JOIN ract_count ON ract.id=ract_count.ract_id AND ract.id='6f3fc0a1';

    SELECT * FROM ract INNER JOIN ract_count ON ract.id=ract_count.ract_id WHERE ract.id='6f3fc0a1';

    由上图可知规律,在on 的情况下and和or与on同时对前面的集合起作用,而存在where的时候,先对集合进行on条件的抽取,再根据where的条件进行抽取

    下面有几个值得注意的地方:
    (1)on后面的筛选条件主要是针对的关联表[而对于主表筛选条件不适用]
    (2)对于主表的筛选条件应放在where后面,不应该放在on后面
    (3)对于关联表我们要区分对待。如果是要条件查询后才连接应该把查询件放置于on后,如果是想要在连接完毕后才筛选就应该把条件放置于where后面
    (4)对于关联表我们其实可以先做子查询再做join

    二、MYSQL LEFT JOIN
    MySQL left join 与join有所不同,MySQL LEFT JOIN 会读取左边数据表的全部数据,即使右边表无对应数据

    SELECT ract.id,ract_count.ract_id,ract.uni_id,ract_count.b_c FROM ract LEFT JOIN ract_count ON ract.id=ract_count.ract_id
    上面实例中使用LEFT JOIN,该语句会读取左边的数据表contract的所有选取的字段数据,即便在右侧表ract_count中没有对应的ract_count.b_c字段值

    三、MySQL RIGHT JOIN
    MySQL RIGHT JOIN
    MySQL RIGHT JOIN 会读取右边数据表的全部数据,即使左边边表无对应数据
    尝试以下实例,以ract为左表,ract_count为右表
    SELECT ract.id,ract_count.ract_id,ract.ni,ract_count.b_c FROM ract RIGHT JOIN ract_count ON ract.id=tract_count.ract_id

    以上实例中使用了 RIGHT JOIN,该语句会读取右边的数据表 ract_count 的所有选取的字段数据,即便在左侧表 ract 中没有对应的ract.ni 字段值。

  • 相关阅读:
    2009年放假时间安排
    省钱方便网上手机充话费
    为啥不能嵌入html?
    超出套餐流量的GPRS流量费竟然要贵100倍!怎么没有人管呢!这个价格怎么定的呢!
    2008汶川加油!2008中国加油!!
    thinkpad X200 破音特别厉害!郁闷啊!千万不要买水货!
    送走2008,迎接新的2009!
    "上海启明星电子商务有限公司"偷偷扣你的电话钱
    从公司到凯虹
    供应二级新疆细绒棉150吨
  • 原文地址:https://www.cnblogs.com/venvive/p/12926599.html
Copyright © 2011-2022 走看看