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
分享到:
相关推荐
WHERE NOT EXISTS (SELECT * FROM Departments WHERE Departments.DepartmentID = Employees.DepartmentID) ``` 这个查询将返回所有未分配部门的员工记录。 5. 结论: 理解并熟练掌握 `EXISTS` 和 `NOT EXISTS` ...
SELECT * FROM t1 WHERE NOT EXISTS (SELECT 1 FROM t2 WHERE t1.c1 = t2.c2); ``` - **执行逻辑**: - **外层表** (`t1`) 首先获取一行记录 `r1`,其 `c1` 字段值为 1。 - 对于该值,在内层表 `t2` 中查找...
WHERE NOT EXISTS (SELECT 1 FROM Customers WHERE Orders.CustomerID = Customers.CustomerID); ``` #### 总结 通过上述介绍可以看出,`EXISTS`和`NOT EXISTS`在SQL查询中有着广泛的应用场景,尤其在提高查询...
WHERE NOT EXISTS (SELECT 1 FROM orders WHERE orders.customer_id = customers.customer_id) ``` `IN` 和 `NOT IN` 操作符用于比较单个值是否在一组值的集合中。`IN`用于匹配任何指定列表中的值,而`NOT IN`则...
1. **`NOT EXISTS`**:主要用于检查子查询是否返回任何行。对于空集,它返回真。 2. **`NOT IN`**:用于排除主查询中的值与子查询结果中出现的值相匹配的行。对于空集,它会错误地排除所有记录。 3. **`NOT NULL`**...
exists 和 not exists的详细解释
SELECT * FROM a WHERE NOT EXISTS (SELECT 1 FROM b WHERE a_id = a.id) ``` 这与`NOT IN`类似,但更高效,因为它在找到匹配项时就停止执行: ```sql SELECT * FROM a WHERE id NOT IN (SELECT a_id FROM b) ``` 这...
`SELECT * FROM table WHERE NOT EXISTS (SELECT * FROM table WHERE id = 1);` 效率分析 在实际应用中,IN 和 EXISTS 的效率可能会有所不同。IN 适合用于内外表数据量都很大的情况,而 EXISTS 适合用于外表数据量...
where not EXISTS (SELECT id FROM reg_person where reg_person.user_id=Sendorder.person_id) or not EXISTS (SELECT id FROM worksite where worksite.id=Sendorder.worksite_id) order by Sendorder.addtime ...
SELECT * FROM users WHERE NOT EXISTS (SELECT 1 FROM active_users WHERE active_users.id = users.id); ``` `not exists`通常被认为在性能上优于`not in`,因为它在找到一个不匹配的记录后就会停止,而无需检查...
SQL语句优化——in,not in,exists,not exists, left join...on博客所需SQL语句.txt欢迎下载!
基本数据插入 except和intersect和exists和not exists和union和union all sql server
如果对于某个学生,所有课程都在 `select_course` 表中有记录(即 `NOT EXISTS (SELECT * FROM course c WHERE ...)` 为假),那么 `NOT EXISTS` 返回真,该学生被包含在结果集中。在这个例子中,ID为1的学生echo...
SELECT COUNT(*) FROM A WHERE NOT EXISTS (SELECT a FROM B WHERE A.a = B.a) ``` 虽然这三条语句在逻辑上等价,即查找A表中不存在于B表的数据,但在性能方面,它们各有特点。通常,`NOT EXISTS` 与 `NOT IN` 类似...
mysql exists与not exists实例详解 tableA |column1 | column1 |column3 | tableb |column1 | column1 |column3 | 要查询 tableA 的数据,条件是是 tableA.column1 不在 tableB 的 tableB.column2 中 也就是要得到...
在sql语名中,if not exists 即如果不存在... 代码如下:if not exists (select * from sysobjects where id = object_id(‘table_name’) and OBJECTPROPERTY(id, ‘IsUserTable’) = 1) c,判断列不存在 代码如下:if
SELECT * FROM employees WHERE NOT EXISTS (SELECT 1 FROM departments WHERE departments.id = employees.department_id AND city = 'New York'); ``` 通常,如果需要排除某些条件,使用 `NOT EXISTS` 会比 `NOT ...
Vitamio缺少的libffmpeg.so文件 解决 Native libs libffmpeg.so not exists!报错