`
davidx
  • 浏览: 83092 次
  • 性别: 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

分享到:
评论

相关推荐

    Oracle和SQL Server浅析

    SELECT 1 FROM (VALUES(1)) WHERE NULL = NULL; ``` 查看当前连接的用户和日期时间,Oracle 使用 `USER` 和 `SYSDATE`: Oracle: ```sql SELECT user FROM dual; SELECT sysdate FROM dual; ``` SQL Server 则...

    浅析多关系SQL查询.pdf

    浅析多关系SQL查询 摘要:本文对多关系SQL查询进行了深入分析,介绍了多关系SQL查询的一般形式,讨论了多关系SQL查询实现中的关键问题,并提供了一些实际应用中的示例代码。 多关系SQL查询是SQL查询中一个非常重要...

    PHP程序安全浅析.pdf

    但是,当我们构造的 SQL 语句为 select id, name from test_thread where kecheng=1 and grade=0 union select 1,password from test_admin 时,问题就来了。 五、防范措施 * 使用prepared statement:可以避免 ...

    浅析SQL注入.ppt

    String sql = "SELECT * FROM foodinfo WHERE foodId = '" + id + "'"; ``` 当用户输入`id = '20'; (任意sql语句) --`时,实际执行的SQL语句可能会变成: ```sql SELECT * FROM foodinfo WHERE foodId = '20'; ...

    VFP环境下应用SQL实现数据查询浅析.pdf

    在SELECT SQL子句浅析中提到了具体的例子,如查询课程的平均成绩,可以通过SELECT课程号,AVG(成绩) AS 平均成绩 FROM 来实现。这说明了SQL语句中可以使用函数来对数据进行处理和转换。 在实际应用中,编写SQL语句...

    ORACLE数据库锁表问题浅析.pdf

    1.查询语句SELECT...FROM...;是小于2的锁 2.SELECT...FROM...FOR UPDATE;是2的锁 3.INSERT/UPDATE/DELETE;是3的锁 4.创建索引时也会产生3、4级别的锁 5.有主外键约束时UPDATE/DELETE;可能会产生4、5的锁 6.DDL语句时...

    浅析SQL注入式攻击与防范

    SELECT COUNT(*) FROM admin WHERE AdminUID='' or '1'='1' or '1'='0' AND AdminPWD='' or '1'='1' or '1'='0' ``` 由于SQL语句中包含了一个永远成立的条件 `1=1`,这将导致任何用户都被认为是合法的,从而可以...

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

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

    浅析被遗忘的SQLServer比较运算符修饰词

    在示例中,`n &gt; ALL (select n from t1)` 与 `not exists (select 1 from t1 where n &gt;= a.n)` 之间的差异在于处理NULL值的方式。前者因t1中的NULL值导致无法满足条件,而后者则会忽略子查询中的NULL值,但保留t2中...

    浅析宠物商店网站系统的数据库设计.pptx

    2. 查询商品(SELECT):SELECT * FROM Products WHERE price ; 3. 更新商品(UPDATE):UPDATE Products SET price = 12.99 WHERE name = 'Pet Food'; 4. 删除商品(DELETE):DELETE FROM Products WHERE price ; ...

    浅析mysql union和union all

    (SELECT a FROM tbl_name WHERE a=10 AND B=1) UNION (SELECT a FROM tbl_name WHERE a=11 AND B=2) ORDER BY a LIMIT 10; ``` 对于更复杂的查询,如结合 `GROUP BY` 和特定条件,可以这样编写: ```sql SELECT ...

    浅析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...

    三种ASP.NET读取Excel文件的方法浅析(含完整代码)

    strExcel = "select * from [sheet1$]"; myCommand = new OleDbDataAdapter(strExcel, strConn); ds = new DataSet(); myCommand.Fill(ds, "table1"); return ds; } ``` 这段代码中包含了一些关键步骤: - ...

    深入浅析Mysql联合索引最左匹配原则

    例如,对于索引(test_col1_col2_col3),查询`SELECT * FROM test WHERE col1=“1” AND clo2=“2”`将使用索引(col1,col2)进行数据匹配。 然而,如果查询条件只匹配了联合索引的部分左侧列,例如`SELECT * FROM ...

    腾讯大讲堂数据库内核设计思路浅析PPT学习教案.pptx

    例如,SQL中的FROM子句解析,如`SELECT * FROM t1, t2, t3;`,在词法和语法分析阶段会被转换成一系列的内部数据结构,如`par_from_tv_list_struct`,用于表示表t1、t2和t3的列表。 5. **语义分析**:进一步处理解析...

    浅析Oracle数据库字符集问题.pdf

    - 查看当前字符集:使用`SELECT * FROM V$NLS_PARAMETERS`或`SELECT * FROM NLS_DATABASE_PARAMETERS`查询数据库的字符集信息。 - 修改初始化参数文件(init.ora或spfile):添加或修改NLS_CHARACTERSET参数,指定...

    iBATIS教程之快速入门浅析

    SELECT * FROM Account WHERE username = #value# &lt;/select&gt; &lt;!-- 更多SQL语句... --&gt; ``` 在Java代码中,使用SqlMapClient接口来执行SQL和操作结果。例如,查询Account可以通过以下方式完成: ```java ...

    浅析SQL Server中的执行计划缓存(上)

    例如,`SELECT * FROM SchemaName.TableName`和`SELECT * FROM TableName`会被视为同一查询,只要表结构和权限相同,就会共享同一个执行计划。 总之,SQL Server的执行计划缓存机制是为了提高查询性能和资源利用率...

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

    (SELECT * FROM table1 RIGHT JOIN table2 ON table1.id = table2.id WHERE table1.id IS NULL); ``` 3. 内连接(INNER JOIN)示例: 在上面的例子中,当A.name等于B.name时,INNER JOIN返回A和B表的匹配记录。 ...

Global site tag (gtag.js) - Google Analytics