重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
sqlserver 05中IN 操作符允许我们在 WHERE 子句中规定多个值。语法如下:SELECT column_name(s)
创新互联长期为数千家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为榕城企业提供专业的网站设计制作、网站制作,榕城网站改版等技术服务。拥有十载丰富建站经验和众多成功案例,为您定制开发。
FROM table_name
WHERE column_name IN (value1,value2,...);CASE 可能是 SQL 中被误用最多的关键字之一。下面是它的语法:SELECT myColumnSpec =
CASE
WHEN A THEN somethingA
WHEN B THEN somethingB
ELSE somethingE
END 综合上面两个关键字的用法,我们不难发现,他们基本上没有什么共同点,从语法、用法、用处、以及操作的对像都是不同的。
in和exists
in 是把外表和内表作hash 连接,而exists是对外表作loop循环,每次loop循环再对内表进行查询。
如果两个表中一个较小,一个是大表,则子查询表大的用exists,子查询表小的用in:
例如:表A(小表),表B(大表)1:select * from A where cc in (select cc from B)
效率低,用到了A表上cc列的索引;select * from A where exists(select cc from B where cc=A.cc)
效率高,用到了B表上cc列的索引。
相反的2:select * from B where cc in (select cc from A)
效率高,用到了B表上cc列的索引;select * from B where exists(select cc from A where cc=B.cc)
效率低,用到了A表上cc列的索引。
not in 和not exists如果查询语句使用了not in 那么内外表都进行全表扫描,没有用到索引;而not extsts 的子查询依然能用到表上的索引。所以无论那个表大,用not exists都比not in要快。
in 与 =的区别
select name from student where name in ('zhang','wang','li','zhao');与
select name from student where name='zhang' or name='li' or
name='wang' or name='zhao'
的结果是相同的。
效率高低通常和需要的条件有关,比如数据量,索引的 创建与否
同等条件下,exists叫存在检测,检测到第一个存在的记录就返回了
in可以理解为在。。。中。通常会进行全表扫描。
exists比in要性能高一些