SQL值exist

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

EXISTS用于检查子查询是否至少会返回一行数据,该子查询实际上并不返回任何数据,而是返回值True或False
EXISTS 指定一个子查询,检测 行 的存在。
(二). 比较使用 EXISTS 和 IN 的查询。注意两个查询返回相同的结果。
select * from TableIn where exists(select BID from TableEx where BNAME=TableIn.ANAME)
select * from TableIn where ANAME in(select BNAME from TableEx)

查询公司管理者的employee_id,t_name,job_id,

department_id信息

SELECT employee_id, t_name, job_id, department_id

FROM   employees outer

WHERE EXISTS ( SELECT 'X'

                 FROM   employees

                 WHERE  manager_id =

                        outer.employee_id);

8. 查询departments表中,不存在于employees表中的部门的department_iddepartment_name

SELECT department_id, department_name

FROM departments d

WHERE NOT EXISTS (SELECT 'X'

                  FROM   employees

                  WHERE  department_id

                         = d.department_id);

猜你喜欢

转载自blog.csdn.net/kylin_learn/article/details/89241869