前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MySQL子查询,联结表

MySQL子查询,联结表

作者头像
小末快跑
发布2019-07-03 17:23:47
4.5K0
发布2019-07-03 17:23:47
举报

一,子查询

子查询:嵌套在其他查询中;执行顺序由里到外。子查询数目没有限制,如果要使用多层查询,注意写好缩进格式,不要出错。

SELECT cust_id,order_num FROM orders WHERE order_num IN(SELECT order_num FROM orderitems WHERE prod_id='TNT2');

对计算字段使用子查询:

SELECT cust_name,cust_state, (SELECT count(*) FROM orders WHERE orders.cust_id=customers.cust_id) AS orders FROM customers

order by cust_name;

二,联结表

SQL强大的功能之一就是能够在数据检索查询的执行中使用联结(join)。使用联结的的原理是一个表与另一个表有相关联的列。一个表的外键是另一个列主键,通过外键可以将两个表联结起来。

SELECT vend_name, prod_name, prod_price FROM vendors,products WHERE vendors.vend_id=products.vend_id ORDER BY vend_name, prod_name;

在使用联结表时,实际上做的是将第一个表的每一行与第二行表行进行匹配。因此,如果没有联结条件,检索出的行数目将是第一个表的行数乘以第二个表的行数,即所谓的笛卡儿积。

内部联结(inner join)=等值联结

SELECT vend_name, prod_name, prod_price FROM vendors INNER JOIN products ON vendors.vend_id=products.vend_id;

对于联结表的数目没有限制,对于那些复杂的查询使用联结将变得简单。

外部链接,左联结(left outer join),右联结(right outer join);左联结左边表全部返回,右边表没有匹配的为空;右联结同理。

SELECT customers.cust_name,customers.cust_id, count(orders.order_num) AS num_ord FROM customers LEFT OUTER JOIN orders ON customers.cust_id=orders.cust_id group by customers.cust_id;

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-05-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小末快跑 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档