ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

MYSQL---多表查询

2021-01-18 13:59:21  阅读:175  来源: 互联网

标签:多表 name 连接 --- MYSQL JOIN WHERE id SELECT


/*
1 子查询
2 内连接
4 右连接
5 全连接连接
3 左连接
6 交叉连接
7 自连接
*/

– 子查询效率没有连接查询高 ,能用连接查询的,就尽量不要用子查询
SELECT c_name FROM class WHERE c_id =(SELECT c_id FROM student WHERE s_name =‘张三2’);

– 连接查询
SELECT a.a_id,a.a_name,b.b_id,b.b_name FROM a,b WHERE a.a_id=b.b_id;

– 内连接
SELECT a.a_id,a.a_name,b.b_id,b.b_name FROM a JOIN b ON a.a_id=b.b_id WHERE b_name=‘aa’;

– 左连接
SELECT a.a_id,a.a_name,b.b_id,b.b_name FROM a LEFT JOIN b ON a.a_id=b.b_id

– 右连接
SELECT a.a_id,a.a_name,b.b_id,b.b_name FROM a RIGHT JOIN b ON a.a_id=b.b_id;

– 全连接 mysql 不支持 ,但是可以用其他的方式来实现
– select a.a_id,a.a_name,b.b_id,b.b_name from a full join b on a.a_id=b.b_id;

SELECT a_id FROM a
UNION ALL
SELECT b_id FROM b;

– mysql中全连接
SELECT a.a_id,a.a_name,b.b_id,b.b_name FROM a LEFT JOIN b ON a.a_id=b.b_id
UNION
SELECT a.a_id,a.a_name,b.b_id,b.b_name FROM a RIGHT JOIN b ON a.a_id=b.b_id;

– 交叉连接
select * from emp,dept where emp.d_id= dept.d_id and emp.e_name=“张三”;;

– 自连接
– 电器下面的子分类
select * from category where p_id =
(select a_id from category where c_name=“电器”);

– 两张表以上联查
方式一
SELECT a.a_id,a.a_name,b.b_id,b.b_name,c…c_id FROM a,b,c WHERE a.a_id=b.b_id and b.b_id=c.c_id;

方式二
SELECT A.,B.,C.*
FROM A
inner join B on A.a_id=B.b_id
inner join C on B.b_id=C.c_id
where
group by
having
order by
limit

注意 a.id b_id c_id 一般是主外键的 关系。

标签:多表,name,连接,---,MYSQL,JOIN,WHERE,id,SELECT
来源: https://blog.csdn.net/weixin_47580822/article/details/112777335

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有