您的位置:首页 > 数据库 > MySQL

Mysql INNER,LEFT ,RIGHT join的使用

2016-03-08 14:56 691 查看
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;


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: