京东6.18大促主会场领京享红包更优惠

 找回密码
 立即注册

QQ登录

只需一步,快速开始

mysql中的自毗连与join关联

2024-11-2 22:39| 发布者: c2688| 查看: 55| 评论: 0

摘要: 目录mysql自毗连分步查询自毗连方式子查询JOININNER JOINLEFT JOINRIGHT JOIN总结mysql自毗连 mysql有时在信息查询时必要举行对自身毗连(自毗连),以是我们必要为表定义别名。 我们举例阐明,下面是商品采购表,我
目录

mysql自毗连

mysql有时在信息查询时必要举行对自身毗连(自毗连),以是我们必要为表定义别名。

我们举例阐明,下面是商品采购表,我们必要找到采购价格比惠惠高的全部信息。

一样平常情况我们看到这张表我们第一时间用语句举行利用:

[code]SELECT * FROM shoping WHERE price>27[/code]

可想而知,这是有多么简单,假设你并不知道数据库表详细数据或者数据量相当巨大呢?

作为一个数据库管理员,我们就要用别的方式迅速找出所必要的数据。

分步查询

最简单的一种方式,也是最轻易想到利用:

[code]SELECT price FROM shopping WHERE name='惠惠' //得出price查询结果为27 SELECT * FROM shopping WHERE price>27[/code]

与采用自毗连的方式相比,这种方法必要对中央结果举行人工干预,显然不利于程序中的自动处理惩罚利用。

自毗连方式

[code]SELECT b.* from shopping as a,shopping as b where a.name='惠惠' and a.price<b.price order by b.id[/code]

我们可以获取到如下表信息:

留意点:

  • 别名 a,b固然名称不同,但是同一个表,定义别名的目标是更方便在自身举行删选。
  • 执行select通过(中央表)所得到的b.*,,就是最终结果。

子查询

子查询也是常用的一种方式,就是在select里嵌套select。

实现代码如下:

[code]SELECT * FROM shopping WHERE price>(select price from 'shopping' where name='惠惠')[/code]

所得结果如下所示,可见两种方式所得结果相同:

JOIN

INNER JOIN

内关联的主要作用是在表中存在至少一个匹配时,就返回结果集,这里的inner join和join作用相同,以是一起先容。

下面给出两张表,分别为goods和category表:

[code]SELECT * FROM goods INNER JOIN category ON goods.id=category.goods_id ORDER BY gods.id[/code]

LEFT JOIN

LEFT JOIN 关键字会从左表 (table_name1) 那里返回全部的行,纵然在右表 (table_name2) 中没有匹配的行。

做项目时发起利用左关联。但是存在许多表关联的,一个表对a是左毗连,但同时对b是右毗连,这时加上右毗连,写起来可能方便一些。

套用一开始的两张表,举行左关联查询:

[code]SELECT goods.*,category.cate_name FROM goods LEFT JOIN category ON goods.id=category.goods_id ORDER BY goods.id[/code]

RIGHT JOIN

RIGHT JOIN 关键字会右表 (table_name2) 那里返回全部的行,纵然在左表 (table_name1) 中没有匹配的行。

套用一开始的两张表举行右关联查询:

[code]SELECT a.goods_name,a.price,b.* FROM goods as a RIGHT JOIN category as b ON a.id=b.goods_id ORDER BY b.id[/code]

对于多表关联的情况,就是多加几条关联语句。

总结

以上为个人履历,盼望能给各人一个参考,也盼望各人多多支持脚本之家。


来源:https://www.jb51.net/database/326960tpc.htm
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
关闭

站长推荐上一条 /6 下一条

QQ|手机版|小黑屋|梦想之都-俊月星空 ( 粤ICP备18056059号 )|网站地图

GMT+8, 2025-7-2 03:17 , Processed in 0.028135 second(s), 18 queries .

Powered by Mxzdjyxk! X3.5

© 2001-2025 Discuz! Team.

返回顶部