SQL中EXISTS的使用方法

EXISTS用于检查子查询是否至少会返回一行数据。该子查询实际上并不返回不论什么数据,而是返回值True或False

EXISTS 指定一个子查询,检測 行 的存在。

Exists 一般用于if语句。最好不要用于where语句

例表A:TableA 例表B:TableB

A表和B表。同样名字且同样性别的有:马艳艳、邓事文。如果我想把A表中的这两个人删除

delete from TableA

where exists

(

select a.*

from TableA a, TableB b

where a.aname = b.bname and a.asex = b.bsex

)

这样的做法是错误的。这条语句的意思是:推断AB两个表是否有同样名字的记录。假设有,就把A表删除,全部记录删除。而不是同样名字的那些记录。

所以,切记。Exists仅仅是推断真假!并不能给select和delete提供筛选。

正确做法例如以下:

delete TableA

from TableA a  inner join TableB  b

on  a.aname = b.bname and a.asex = b.bsex

-- 注意,不要用left join,由于用左连接,A表还是会所有列出,依旧会所有被删除。

时间: 2024-08-11 01:33:46

SQL中EXISTS的使用方法的相关文章

sql中exists,not exists的用法

转 sql中exists,not exists的用法 exists : 强调的是是否返回结果集,不要求知道返回什么, 比如:  select name from student where sex = 'm' and mark exists(select 1 from grade where ...) ,只要exists引导的子句有结果集返回,那么exists这个条件就算成立了,大家注意返回的字段始终为1,如果改成"select 2 from grade where ...",那么返回

SQL中EXISTS怎么用[转]

SQL中EXISTS怎么用 1 2 3 4 分步阅读 EXISTS用于检查子查询是否至少会返回一行数据,该子查询实际上并不返回任何数据,而是返回值True或False 方法/步骤 1 EXISTS用于检查子查询是否至少会返回一行数据,该子查询实际上并不返回任何数据,而是返回值True或FalseEXISTS 指定一个子查询,检测 行 的存在. 语法: EXISTS subquery参数: subquery 是一个受限的 SELECT 语句 (不允许有 COMPUTE 子句和 INTO 关键字).

SQL中EXISTS、NOT EXISTS、IN、NOT IN

EXIST和IN 比如在Northwind数据库中有一个查询为 SELECT c.CustomerId,CompanyName FROM Customers cWHERE EXISTS(SELECT OrderID FROM Orders o WHERE o.CustomerID=c.CustomerID) 这里面的EXISTS是如何运作呢?子查询返回的是OrderId字段,可是外面的查询要找的是CustomerID和CompanyName字段,这两个字段肯定不在OrderID里面啊,这是如何匹

sql中exists和notexists用法总结(并和in的比较)

首先头脑中有三点概念: 1.EXISTS子查询找到的提交 NOT EXISTS 子查询中 找不到的提交 说明:不要去翻译为存在和不存在,把脑袋搞晕. 2.建立程序循环的概念,这是一个动态的查询过程.如 FOR循环 . 3.Exists执行的流程Exists首先执行外层查询,再执行内存查询,与IN相反. 流程为首先取出外 层中的第 一 元组, 再执行内层查询,将外层表的第一元组代入,若内层查询为真,即有结果 时.返回外层表中的第一元组,接着取出第二元组,执行相同的算法.一直到扫描完外层整表 . ?

数据库——SQL中EXISTS怎么用3(转)

有一个查询如下: 1 SELECT c.CustomerId, CompanyName   2 FROM Customers c   3 WHERE EXISTS(   4     SELECT OrderID FROM Orders o   5     WHERE o.CustomerID = cu.CustomerID)   这里面的EXISTS是如何运作呢?子查询返回的是OrderId字段,可是外面的查询要找的是CustomerID和CompanyName字段,这两个字段肯定不在Order

SQL中EXISTS使用

EXISTS的作用和IN一样,判断是否包含 建立两张表,第一张T_USER表,如下: 第二张,T_DEP表,表结构如下: 两张表结构,都非常简单,没有添加约束. 此时执行下列SQL: select * from t_user u where exists( select 1 from t_dep d where u.depno = d.id) 得到如下结果: 等同于使用IN: select * from t_user u where u.depno in ( select d.id from t

数据库——SQL中EXISTS怎么用2(转)

数据库sql语句的exists总结 sql exists in 学习 先来比较下语法: --deals=交易表,areas=地域表,例如香港:我们的目的:查看有交易的地域 select * from areas where id in (select city_id from deals); select * from areas where id in   (select city_id from deals where deals.city_id = areas.id); select *

数据库——SQL中EXISTS怎么用1(转)

EXISTS用于检查子查询是否至少会返回一行数据,该子查询实际上并不返回任何数据,而是返回值True或False 方法/步骤 EXISTS用于检查子查询是否至少会返回一行数据,该子查询实际上并不返回任何数据,而是返回值True或FalseEXISTS 指定一个子查询,检测 行 的存在. 语法: EXISTS subquery参数: subquery 是一个受限的 SELECT 语句 (不允许有 COMPUTE 子句和 INTO 关键字).结果类型: Boolean 如果子查询包含行,则返回 TR

SQL中EXISTS的用法

比如在Northwind数据库中有一个查询为 SELECT c.CustomerId,CompanyName FROM Customers cWHERE EXISTS(SELECT OrderID FROM Orders o WHERE o.CustomerID=c.CustomerID) 这里面的EXISTS是如何运作呢?子查询返回的是OrderId字段,可是外面的查询要找的是CustomerID和CompanyName字段,这两个字段肯定不在OrderID里面啊,这是如何匹配的呢? EXIS