关于数据的连接以及左(右)链接

Mysql 

中的Join、left join 的使用

SELECT, UPDATE 和 DELETE 语句中使用Mysql 的 join 来联合多表查询。

在命令提示符中使用JOIN
TUTORIALS数据库中有两张表 tcount_tbl 和 tutorials_tbl。

tutorials_tbl表

| tutorial_id | tutorial_title | tutorial_author | submission_date |
+-------------+----------------+-----------------+-----------------+
|           1 | Learn PHP      | John Poul       | 2007-05-24      |
|           2 | Learn MySQL    | Abdul S         | 2007-05-24      |
|           3 | JAVA Tutorial  | Sanjay          | 2007-05-06      |
+-------------+----------------+-----------------+---------------

tcount_tbl表
+-----------------+----------------+
| tutorial_author | tutorial_count |
+-----------------+----------------+
| mahran          |             20 |
| mahnaz          |           NULL |
| Jen             |           NULL |
| Gill            |             20 |
| John Poul       |              1 |
| Sanjay          |              1 |
+-----------------+----------------+

使用 join读取所有tutorial_author字段在tcount_tbl表对应的tutorial_count字段值:
<pre name="code" class="sql"> SELECT a.tutorial_id, a.tutorial_author, b.tutorial_count FROM tutorials_tbl a, tcount_tbl b WHERE a.tutorial_author = b.tutorial_author;
 
+-------------+-----------------+----------------+
| tutorial_id | tutorial_author | tutorial_count |
+-------------+-----------------+----------------+
|           1 | John Poul       |              1 |
|           3 | Sanjay          |              1 |
+-------------+-----------------+----------------+

使用MySQL的JOIN来连接以上两张表来读取tutorials_tbl表中所有tutorial_author字段在tcount_tbl表对应的tutorial_count字段值。

(即为:就是显示相应的数据,符合条件的公共的部分,和左(右)连接有点差别)


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

 SELECT a.tutorial_id, a.tutorial_author, b.tutorial_count FROM tutorials_tbl a LEFT JOIN tcount_tbl b ON a.tutorial_author = b.tutorial_author;
+-------------+-----------------+----------------+
| tutorial_id | tutorial_author | tutorial_count |
+-------------+-----------------+----------------+
|           1 | John Poul       |              1 |
|           2 | Abdul S         |           NULL |
|           3 | Sanjay          |              1 |
+-------------+-----------------+----------------+

如果是右连接的话,将会显示的是右边的全部数据,不管左边有没有对应的数据。



总结:

1、join 、left join 它们之间的关系是看看是以什么为重的;

2、查询数据的不低,join是查询第一张表在第二张表对应的数据,所以重要的结果是第二张表对应的数据;侧重于第二表(目标表)

left join 是查询第一张表中的全部数据,不管第二张表有没有,若是没有,第一张表对应的字段的值是NULL,所以侧重于第一张表(left);

同样也会有相应的right join,原理和left join是一样的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值