这SQL语句里的ON 是什么意思啊

SELECTPersons.LastName,Persons.FirstName,Orders.OrderNoFROMPersonsINNERJOINOrdersONPe... SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
INNER JOIN Orders
ON Persons.Id_P=Orders.Id_P
ORDER BY Persons.LastName
展开
 我来答
娱乐小八卦啊a
高粉答主

2020-04-09 · 娱乐小八卦,天天都知道
娱乐小八卦啊a
采纳数:256 获赞数:117852

向TA提问 私信TA
展开全部

on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录。

on、where、having这三个都可以加条件的子句中,on是最先执行,where次之,having最后。有时候如果这先后顺序不影响中间结果的话,那最终结果是相同的。但因为on是先把不符合条件的记录过滤后才进行统计,它就可以减少中间运算要处理的数据,按理说应该速度是最快的。

根据上面的分析,可以知道where也应该比having快点的,因为它过滤数据后才进行sum,所以having是最慢的。但也不是说having没用,因为有时在步骤3还没出来都不知道那个记录才符合要求时,就要用having了。         

在两个表联接时才用on的,所以在一个表的时候,就剩下where跟having比较了。在这单表查询统计的情况下,如果要过滤的条件没有涉及到要计算字段,那它们的结果是一样的,只是where可以使用rushmore技术,而having就不能,在速度上后者要慢。

扩展资料

SQL中on条件与where条件的区别:

where条件是在临时表生成好后,再对临时表进行过滤的条件。这时已经没有left join的含义(必须返回左边表的记录)了,条件不为真的就全部过滤掉。     

在多表联接查询时,on比where更早起作用。系统首先根据各个表之间的联接条件,把多个表合成一个临时表后,再由where进行过滤,然后再计算,计算完后再由having进行过滤。由此可见,要想过滤条件起到正确的作用,首先要明白这个条件应该在什么时候起作用,然后再决定放在那里。

join过程可以这样理解:首先两个表做一个笛卡尔积,on后面的条件是对这个笛卡尔积做一个过滤形成一张临时表,如果没有where就直接返回结果,如果有where就对上一步的临时表再进行过滤。

莱伯泰科
2024-10-28 广告
LabTech Group,即北京莱伯泰科仪器股份有限公司,是业界领先的实验室科学仪器与解决方案提供商。我们专注于分析测试仪器的研发、生产和销售,致力于为全球科研工作者、高校及企业实验室提供高性能、高稳定性的产品与服务。通过持续的技术创新与... 点击进入详情页
本回答由莱伯泰科提供
raymonshi
推荐于2017-11-25 · TA获得超过490个赞
知道小有建树答主
回答量:416
采纳率:100%
帮助的人:247万
展开全部
”INNER JOIN Orders
ON Persons.Id_P=Orders.Id_P“
这里, [表] inner join [表]...on...[关联条件] 这是俩张表关联的固定语法
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yuxuanbt
2013-04-24 · 超过27用户采纳过TA的回答
知道答主
回答量:140
采纳率:0%
帮助的人:81.6万
展开全部
join on 用于连接的俩张表的关联条件。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lib2cup
2013-04-24 · 超过24用户采纳过TA的回答
知道答主
回答量:280
采纳率:0%
帮助的人:74.8万
展开全部
on 两张表连接的关联关系。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yinweidns
2013-04-24 · TA获得超过106个赞
知道小有建树答主
回答量:212
采纳率:0%
帮助的人:126万
展开全部
两个表中满足这种条件的才相连
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式