mysql的内连接,左连接,右连接,子查询(部分转载,部分自己整理)
1.表连接(内连接)
select 字段1,字段2...from 表1,表2 where 表1.字段3=表2.字段3(注意表和字段之间有个点)
关键字:inner join on
语句:select * from a_table a inner join b_table b on a.a_id = b.b_id;
解读:组合两个表中的记录,返回关联字段相符的记录,也就是返回两个表的交集(阴影)部分。
2.表外连接(左连接)
关键字:left join on / left outer join on
语句:select * from a_table a left join b_table bon a.a_id = b.b_id;
说明:
left join 是left outer join的简写,它的全称是左外连接,是外连接中的一种。
左(外)连接,左表(a_table)的记录将会全部表示出来,而右表(b_table)只会显示符合搜索条件的记录。右表记录不足的地方均为NULL。
3.表外连接(右连接)
关键字:right join on / right outer join on
语句:select * from a_table a right join b_table b on a.a_id = b.b_id;
说明:
right join是right outer join的简写,它的全称是右外连接,是外连接中的一种。
与左(外)连接相反,右(外)连接,左表(a_table)只会显示符合搜索条件的记录,而右表(b_table)的记录将会全部表示出来。左表记录不足的地方均为NULL。
4.子查询
关键字:in
语句:select *from 表1 where 字段名 in (select *from 表 where 条件)
子查询主要是对结果集,就是后面的括号内的内容,在进行一次筛选
需要注意的几个点
1.子查询在 SELECT 子句中只能有一个列
2.子查询返回多于一行,只能与多值运算符一起使用,如 IN 运算符
例子:
SELECT *FROM A WHERE id in (SELECT id FROM B);