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;
浙公网安备 33010602011771号