`
davidx
  • 浏览: 82133 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

select 1 from 浅析

阅读更多

一、http://www.cnblogs.com/weiwcn/archive/2008/03/24/1120079.html

今天看到项目代码里有这条语句,不懂select 1 from XXXXXXX里的1是何意,查了一番才知道:

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);

 二、http://blog.csdn.net/wangyihust/archive/2009/02/05/3863758.aspx

测试场景:(转自网络文献)
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

分享到:
评论

相关推荐

    浅析Android手机卫士之号码归属地查询

    使用小米号码归属地数据库,有两张表data1和...select location from data2 where id=(select outkey from data1 where id=”前7位手机号”) 创建数据库工具类 新建一个包xxx.db.dao 新建一个类NumberAddressUtils

    MySql数据库中的子查询与高级应用浅析

    select * from students where age &gt; (select avg(age) from students); 例2. 查询学生在班的所有班级名字: select name from classes where id in (select cls_id from students where cls_id is not null); 例3. ...

    浅析SQL Server的聚焦使用索引和查询执行计划

    上一篇《浅析SQL Server 聚焦索引对非聚集索引的影响》我们讲了聚集索引对非聚集索引的影响,对数据库一直在强调的性能优化,所以这一节我们统筹讲讲利用索引来看看查询执行计划是怎样的,简短的内容,深入的理解。...

    浅析Oracle和Mysql分页的区别

    select * from stu limit m, n; //m = (startPage-1)*pageSize,n = pageSize PS: (1)第一个参数值m表示起始行,第二个参数表示取多少行(页面大小) (2)m= (2-1)*10+1,n=10 ,表示 limit 11,10从11行开始,取10...

    sql server2016里面的json功能浅析

    测试一下基本的,从查询结果里面构造一个json 的格式 create table t1(ID int identity,name ...select * from t1 select * from t1 for json auto --查询结果 ID name Chinese Math ----------- -------------------

    Oracle 中 table 函数的应用浅析

    表函数可接受查询语句或游标作为输入参数,并... FROM TABLE (myfunction (CURSOR (SELECT * FROM mytab))); 2. 利用两个实体化视图(或表)作为样板数据 CREATE MATERIALIZED VIEW sum_sales_country_mv BUILD IMME

    浅析MySQL replace into 的用法

    代码如下: if not exists (select 1 from t where id = 1) insert into t(id, update_time) values(1, getdate())else update t set update_time = getdate() where id = 1 那么 MySQL 中如何实现这样的逻辑呢?...

    浅析SQL server 临时表

    运行后,我们在此文件执行输入: select * from #tempTable, 执行后可以查询出如下的数据: 我们另外打开一个【新建查询】,就给其命名为新建查询2,在新建查询2中执行输入: select * from #tempTable,提示如下: ...

    浅析mysql union和union all

    select * from gc_dfys union select * from ls_jg_dfys 这个SQL在运行时先取出两个表的结果,再用排序空间进行排序删除重复的记录,最后返回结果集,如果表数据量大的话可能会导致用磁盘进行排序。  MySQL中的U

    浅析SQL语句中GROUP BY的用法

    select A,B from table group by A 你说这样查出来是什么结果, A B  abc 1 bcd  asdfg 右边3条如何变成一条,所以需要用到聚合函数,比如 select A,count(B) 数量 from table group by A 这样的结果就是 A 数量

    浅析MySQL之字符串函数

    1. left函数, 对查询字段的字符串内容进行截取,用法select left(content,50) as summary from article; 在这里的意思是只查询content列内容的前50个字符,在这里汉字也只当作一个字符。 2. right函数,与left函数...

    MySQL中“:=”和“=”的区别浅析

    = 只有在set和update时才是和:=一样,赋值的作用,其它都是等于的作用。鉴于此,用变量实现行号时,必须用:=。 := 不只在set和update时时...SELECT @num = @num+1 AS rowno, nc as nickname from table_user; 结果 sql

    浅析Oracle中的不等于号

    但是奇怪是的, 我想拿出price不是180000的商品时:(price是Number类型的) SELECT id, name FROM product where price&lt;&gt; 180000; 执行这个语句时,priceis null 的记录不出来。也就是拿不到price是null的...

    PHP登录环节防止sql注入的方法浅析

    在防止sql注入这些细节出现问题的一般是那些大意的程序员或者是新手程序员,他们由于没有对用户提交过来的数据进行一些必要的过滤,从而导致了给大家测试的时候一下就攻破了你的数据库...$sql = 'select * from test wh

    MySQL查询中LIMIT的大offset导致性能低下浅析

    前言 我们大家都知道,mysql查询使用select命令,配合limit,offset参数可以读取指定范围的记录,但是offset过大影响查询性能的原因及优化方法 我们在业务系统中难免少不了分页的需求...SELECT * FROM myTable ORDER BY

    深入浅析.NET应用程序SQL注入

    IF EXISTS(SELECT * FROM SYSDATABASES WHERE name = 'SQLTMP') --删除SQLTMP数据库 DROP DATABASE SQLTMP GO --创建数据库 CREATE DATABASE SQLTMP GO --使用SQLTMP数据库 USE SQLTMP GO -------------创建一张表...

    浅析Mysql Join语法以及性能优化

    代码如下:… FROM table1 INNER|LEFT|RIGHT JOIN table2 ON conditiona table1:左表;table2:右表。 JOIN 按照功能大致分为如下三类: INNER JOIN(内连接,或等值连接):取得两个表中存在连接匹配关系的记录。 ...

    System表空间不足的报警问题浅析

    SQL&gt; select owner, segment_name, segment_type, sum(bytes)/1024/1024 space_m from dba_segments where tablespace_name = 'SYSTEM' group by owner, segment_name, segment_type having sum(bytes)/1024/1024 ...

    深入浅析SQL中的group by 和 having 用法

    一、sql中的group by 用法解析:  Group By语句从英文的字面意义上理解就是“根据(by)一定的规则进行分组(Group)”...select DepartmentID as '部门名称',COUNT(*) as '个数'  from BasicDepartment  group by Depa

    浅析一个MYSQL语法(在查询中使用count)的兼容性问题

    简单来说就是在查询中使用count以及更多字段 代码如下:select count(id),id,name from table 很尴尬的,我的环境是5.5的,这个是能获取到结果的,但是运行到服务器就不行了好吧,报了一个错误 代码如下:#1140 – ...

Global site tag (gtag.js) - Google Analytics