sqlon
A. sql的on有什么用
on 是关联条件,‘当...的时候’的意思
作用类似WHERE.
只有用join 的时候 才用.
有:
inner join ...on
left outer join ...on
right outer join ...on
几种情况.
如:
SELECT *
FROM TABALE1 A
LEFT OUTER JOIN TABLE2 B ON A.COL1=B.COL2.
B. 这SQL语句里的ON 是什么意思啊
on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录。
on、where、having这三个都可以加条件的子句中,on是最先执行,where次之,having最后。有时候如果这先后顺序不影响中间结果的话,那最终结果是相同的。但因为on是先把不符合条件的记录过滤后才进行统计,它就可以减少中间运算要处理的数据,按理说应该速度是最快的。
根据上面的分析,可以知道where也应该比having快点的,因为它过滤数据后才进行sum,所以having是最慢的。但也不是说having没用,因为有时在步骤3还没出来都不知道那个记录才符合要求时,就要用having了。
在两个表联接时才用on的,所以在一个表的时候,就剩下where跟having比较了。在这单表查询统计的情况下,如果要过滤的条件没有涉及到要计算字段,那它们的结果是一样的,只是where可以使用rushmore技术,而having就不能,在速度上后者要慢。
(2)sqlon扩展阅读
SQL中on条件与where条件的区别:
where条件是在临时表生成好后,再对临时表进行过滤的条件。这时已经没有left join的含义(必须返回左边表的记录)了,条件不为真的就全部过滤掉。
在多表联接查询时,on比where更早起作用。系统首先根据各个表之间的联接条件,把多个表合成一个临时表后,再由where进行过滤,然后再计算,计算完后再由having进行过滤。由此可见,要想过滤条件起到正确的作用,首先要明白这个条件应该在什么时候起作用,然后再决定放在那里。
join过程可以这样理解:首先两个表做一个笛卡尔积,on后面的条件是对这个笛卡尔积做一个过滤形成一张临时表,如果没有where就直接返回结果,如果有where就对上一步的临时表再进行过滤。
C. 关于SQL中join on 的用法神马的
join on 就是表连接.
select * from table1 as t1 join table2 as t2 on(t1.a= t2.b) where t1.c = x order by t1.d desc;
等价于
select * from table 1 as t1 ,table2 as t2 where t1.a = t2.b and t1.c = x order by t1.d desc;
2个SQL语句对于数据库来说是一样的,执行计划都没有区别...
你可以试一下.
D. SQL左右连接中的on and和on where的区别
原先一直对SQL左右连接中的on and和on where的区别不是太了解,直到在网上看到了下面这段话才豁然开朗。
在使用left join时,on and和on where条件的区别如下:
1、on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录。
2、where条件是在临时表生成好后,再对临时表进行过滤的条件。这时已经没有left join的含义(必须返回左边表的记录)了,条件不为真的就全部过滤掉,on后的条件用来生成左右表关联的临时表,where后的条件对临时表中的记录进行过滤。
E. SQL语句SET FMTONLY {OFF/ON}在什么情况下使用到
SET FMTONLY 的设置是在执行或运行时设置,而不是在分析时设置。 当 SET FMTONLY 为 ON 时,将不对行进行处理,也不将行作为请求的结果发送到客户端。
F. sql语句中的left join on 什么意思啊 如何用
LEFTJOIN关键字会从左表那里返回所有的行,即使在右表中没有匹配的行。意思就是向左关联某个表记录,以左边的那个表的记录为基准,通过关联条件,将关联表的相关符合要求的记录一起找出来,找出来的记录条数就是左边表的记录数
具体用法如下:
SELECT column_name(s)
FROM table_name1
LEFTJOINtable_name2
ONtable_name1.column_name=table_name2.column_name
拓展材料:
使用"left join...on"的作用在于从t1表中返回所有行,如果t2表中没有相应的记录则补“null”。详见下图
G. SQL中的ON和WHERE有什么区别啊谢谢
本质上的区别不是很清楚.
实际应用中的,比较了解,on 条件是用于外键连接,where 条件是用于筛选纪录.
on可适用于多条记录,asp批量处理时候常用.where必将常见于单条记录读取查询.
而且on一般跟join连用的,where是条件语句,听说在有索引的情况下,join的效率会更快点,但具体没亲自测试过.
where是SQL-89语法,用on是SQL-92语法,都还没过时,具体看实际用途进行选择.
H. sql server中的关键字in和on有什么区别
IN是在什么什么范围中。
如:Select * from Appuser where UserID In (101,102,103,104)
ON主要是用来做两个表的连接的。
如:
select distinct customers.customerid,customers.companyname
from customers join orders on
(customers.customerid=orders.customerid
)
where orders.shippeddate>2002-05-09
I. sql on 后面的条件写多了没效果,求解释
在使用LEFT JION时,ON和where的区别
ON是在生成临时表时使用的条件,不管ON中的条件是真假,都会返回左表的记录
Where 是临时表生成后,再对临时表过滤,这时已经没有LEFT JION的含义,条件不为真就全部过滤掉
J. SQL中ON和WHERE的区别
1、 on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录。
2、where条件是在临时表生成好后,再对临时表进行过滤的条件。这时已经没有left join的含义(必须返回左边表的记录)了,条件不为真的就全部过滤掉。