MySQL 多表查询

-- 交叉连接
SELECT * FROM 表一 JOIN 表二;
-- 内连接
SELECT * FROM 表一 JOIN 表二 ON 表一.字段1=表二.字段2;
-- 左外连接       特点:在内连接的基础上把join左边的表中不满足条件的数据也查出来放在结果集中,右表中的字段自动补null
SELECT * FROM 表一 LEFT JOIN 表二 ON 表一.字段1=表二.字段2;
-- 右外连接   
SELECT * FROM 表一 RIGHT JOIN 表二 ON 表一.字段1=表二.字段2;

练习

-- 找到索尼手机4G手机所属类别名称
SELECT protype_name FROM product JOIN product_type ON product.protype=product_type.protype_id
 WHERE pro_name LIKE '%索尼%' AND pro_name LIKE '%4G手机%';

-- 找出所有属于手机数码的产品
SELECT * FROM product JOIN product_type ON product.protype=product_type.protype_id
 WHERE protype_name='手机数码';
 

子查询

-- 子查询:找出所有属于手机数码的产品 
-- 特点:子查询就是把一个查询的结果当作另一个查询的条件
SELECT * FROM product WHERE protype=(SELECT protype_id FROM product_type WHERE protype_name='手机数码');
-- 子查询 找出索尼4G手机所属类别名称
SELECT protype_name FROM product_type WHERE protype_id=(SELECT protype FROM product WHERE pro_name LIKE '%索尼%4G手机%');
-- in子查询
SELECT protype_name FROM product_type WHERE protype_id IN(值1,值2,值3)


原文地址:https://www.cnblogs.com/-dashu/p/9295021.html