Mysql INNER,LEFT ,RIGHT join的使用

JOIN 按照功能大致分为如下三类:

  • INNER JOIN(内连接,或等值连接):获取两个表中字段匹配关系的记录。
  • LEFT JOIN(左连接):获取左表所有记录,即使右表没有对应匹配的记录。
  • RIGHT JOIN(右连接): 与 LEFT JOIN 相反,用于获取右表所有记录,即使左表没有对应匹配的记录。

INNER JOIN

首先,这样是寻找两个表之间的一个关联的字段,然后就能够得到两个表的功用数据。

SELECT
    a.UserId,
    a.UserNo,
    b.ty_name
FROM
    user a,
    type b
WHERE
    a.UserId = b.ty_id;

等同于

select a.UserId,a.UserNo FROM user  a

用查出来的a.UserId查询出来的list,做一个循环,将主键带入到另一个表中查询出数据

SELECT
    b.ty_name
from 
type b
where 
b.ty_id = ?

这样也能达到一样的效果。

同样等价于:

SELECT     t1.UserNo,b.ty_name FROM 
(select a.UserId,a.UserNo FROM user  a)  t1
,type b
where 
t1.UserId = b.ty_id

表示,将一个表里面查出来的数据作为一张临时的表,然后和另一张表进行外键的链接。

同样等价于这里所谓的INNER JOIN内链接

SELECT
    a.UserId,
    a.UserNo,
    b.ty_name
FROM
    user a
INNER JOIN
    type b ON a.UserId = b.ty_id;

 

LEFT JOIN(左链接)

SELECT
    a.UserId,
    a.UserNo,
    b.ty_name
FROM
    user a
LEFT  JOIN
    type b ON a.UserId = b.ty_id;

MySQL LEFT JOIN 会读取左边数据表的全部数据,即便右边表无对应数据

RIGHT JOIN 会读取右边数据表的全部数据,即便左边边表无对应数据

SELECT
    a.UserId,
    a.UserNo,
    b.ty_name
FROM
    user a
right JOIN
    type b ON a.UserId = b.ty_id;

 

posted on 2016-03-08 14:56  手撕高达的村长  阅读(1615)  评论(0)    收藏  举报

导航