select 1 from table 与Select * from
table在用法上大同小异,具体不同分析见下文:
1、select 1 from mytable;与select anycol(目的表集合中的任意一行) from
mytable;与select * from mytable
作用上来说是没有差别的,都是查看是否有记录,一般是作条件用的。select 1 from
中的1是一常量,查到的所有行的值都是它,但从效率上来说,1>anycol>*,因为不用查字典表。
2、查看记录条数可以用select sum(1) from mytable;等价于select sum(*) from
mytable;
3、实际项目SQL:
select c_insrnc_cde, c_nme_cn
from t_prd_ins a
where a.c_prod_no = '01'
and not
exists
(select 1
from (select d.c_insrnc_cde, a.c_nme_cn
from
t_prd_ins
a,
tb_bas_ply_policy_rdr
c,
tb_bas_ply_policy_rdr_list d
where a.c_insrnc_cde = d.c_insrnc_cde
and d.c_policy_id = c.c_policy_id
and d.c_seq_no = c.c_seq_no
and a.c_kind_no = '01'
and c.c_dpt_cde = '101'
----机构树中取出机构
and c.c_prod_no = '01'
and c.t_effc_tm <= TO_DATE('2007-9-5',
'YYYY-MM-DD')
and c.t_expd_tm >= TO_DATE('2007-9-5',
'YYYY-MM-DD')
and c.c_work_mode = '00501'
and c.c_reach_area = '00701'
) t
where t.c_insrnc_cde = a.c_insrnc_cde);
测试场景
:
table表是一个数据表,假设表的行数为10行。
1:select 1 from
table
增加临时列,每行的列值是写在select后的数,这条sql语句中是1
2:select count(1) from
table
不管count(a)的a值如何变化,得出的值总是table表的行数
3:select sum(1) from table
计算临时列的和
在SQL SERVER中用 1 测试了一下,发现结果如下:
1:测试结果,得出一个行数和table表行数一样的临时列(暂且这么叫,我也不知道该叫什么),每行的列值是1;
2:得出一个数,该数是table表的行数;
3:得出一个数,该数是table表的行数;
然后我又用“2”测试,结果如下:
1:得出一个行数和table表行数一样的临时列,每行的列值是2;
2:得出一个数,该数是table表的行数;
3:得出一个数,该数是table表的行数×2的数
然后我又用更大的数测试:
1:得出一个行数和table表行数一样的临时列,每行的列值是我写在select后的数;
2:还是得出一个数,该数是table表的行数;
3:得出一个数,该数是table表的行数×写在select后的数
综上所述:第一种的写法是增加临时列,每行的列值是写在select后的数;第二种是不管count(a)的a值如何变化,得出的值总是table表的行数;第三种是计算临时列的和。
语句if not exists(select 1 from deleted d join inserted i on
d.ID=i.ID
and d.col1=1 and i.col1=2)
if not exists 如果不存在
(..)这里该是验证更新,更新前的id等于更新后的id,并且更新前col的值是1,更新后的值是2
上文摘抄自:http://blog.sina.com.cn/s/blog_4b3c1f950102dw4d.html
分享到:
相关推荐
exists 和 not exists的详细解释
关于Exists,not Exists.in ,not in效率的说明。关于Exists,not Exists.in ,not in效率的说明。关于Exists,not Exists.in ,not in效率的说明。关于Exists,not Exists.in ,not in效率的说明。关于Exists,not Exists.in...
not exists:与exists相反,括号内子查询sql语句返回结果为空(即:sql不返回的结果为真),子查询的结果为空则条件成立,执行主slq,否则不执行。 总结:exists 和not exists语句强调是否返回结果集,不要求知道返回...
NOT EXISTS ⇔ NOT IN ⇒ NOT NULL 问题 结果不一样 疑问 如果等效
基本数据插入 except和intersect和exists和not exists和union和union all sql server
SQL语句优化——in,not in,exists,not exists, left join...on博客所需SQL语句.txt欢迎下载!
NOT IN、JOIN、IS NULL、NOT EXISTS效率对比 语句一:select count(*) from A where A.a not in (select a from B) 语句二:select count(*) from A left join B on A.a = B.a where B.a is null 语句三:select ...
里面自己根据网上的资源整理出来的一份sql中in,exists,not in,not exists的使用方法以及注意事项等,有助于初学的朋友们借鉴。
Vitamio缺少的libffmpeg.so文件 解决 Native libs libffmpeg.so not exists!报错
NULL 博文链接:https://576017120.iteye.com/blog/1624774
使用EXISTS(或NOT EXISTS)关键字引入一个子查询时,子查询实际上不产生任何数据;它只返回TRUE或FALS值。 指定一个子查询,检测行的存在。 如果子查询包含行,则返回 TRUE IN效率要差(返回子查询)
mysql exists与not exists实例详解 tableA |column1 | column1 |column3 | tableb |column1 | column1 |column3 | 要查询 tableA 的数据,条件是是 tableA.column1 不在 tableB 的 tableB.column2 中 也就是要得到...
MySQL优化之in,exists,not in,not exists的区别in与existsin查询过程结论:exists查询过程:结论:not in与not existsnot in查询过程:结论:not exists查询过程:结论: 首先我们使用两个用户表作为实例 insert ...
sql语句优化之用EXISTS替代IN、用NOT EXISTS替代NOT IN的语句
1. EXISTS的执行流程 select * from t1 where exists ( select null from t2 where y = x ) 可以理解为: 代码如下: for x in ( select * from t1 ) loop if ( exists ( select null from t2 where y = x.x ) then ...
非上传者作品。本人只是学习的时候百度到的比较的文档,拿出来和大家分享一下,希望对大家有所帮助!
SQL语句优化——in,not in,exists,not exists, left join...on博客所需SQL语句2.txt,欢迎下载!
在sql语名中,if not exists 即如果不存在... 代码如下:if not exists (select * from sysobjects where id = object_id(‘table_name’) and OBJECTPROPERTY(id, ‘IsUserTable’) = 1) c,判断列不存在 代码如下:if
一次SQL Tuning引出来的not in , not exists 语句的N种写法2