SQL Server (Transact-SQL) EXISTS 运算符用于测试子查询中的记录是否存在。如果子查询返回一条或多条记录,则返回 true,否则返回 false。
语法
在 SQL Server (Transact-SQL) 中使用 EXISTS 运算符的语法如下:
SELECT column1, column2, column3, ...
FROM table_name
WHERE EXISTS
(SELECT column_name FROM table_name
WHERE condition);
示例:
考虑一个包含名为 Employee 和 Contact_Info 包含以下记录:
表 1: Employee 表
EmpID | Name | City | Age | Salary |
---|---|---|---|---|
1 | John | London | 25 | 3000 |
2 | Marry | New York | 24 | 2750 |
3 | Jo | Paris | 27 | 2800 |
4 | Kim | Amsterdam | 30 | 3100 |
5 | Ramesh | New Delhi | 28 | 3000 |
6 | Huang | Beijing | 28 | 2800 |
表 2 : Contact_Info表
Phone_Number | EmpID | Address | Gender |
---|---|---|---|
+1-8054098000 | 2 | Brooklyn, New York, USA | F |
+33-147996101 | 3 | Grenelle, Paris, France | M |
+31-201150319 | 4 | Geuzenveld, Amsterdam, Netherlands | F |
+86-1099732458 | 6 | Yizhuangzhen, Beijing, China | M |
+65-67234824 | 7 | Yishun, Singapore | M |
+81-357799072 | 8 | Koto City, Tokyo, Japan | M |
下面的SQL Server语句返回TRUE,并且女性员工的记录来自Employee 表。
SELECT * FROM Employee
WHERE EXISTS
(SELECT EmpID FROM Contact_Info
WHERE Employee.EmpID = Contact_Info.EmpID AND Gender = 'F');
这将产生如下所示的结果:
EmpID | Name | City | Age | Salary |
---|---|---|---|---|
2 | Marry | New York | 24 | 2750 |
4 | Kim | Amsterdam | 30 | 3100 |
下面提到的 SQL服务器语句返回 TRUE 以及 Employee 表中的男性员工记录。
SELECT * FROM Employee
WHERE EXISTS
(SELECT EmpID FROM Contact_Info
WHERE Employee.EmpID = Contact_Info.EmpID AND Gender = 'M');
上述查询的结果将是:
EmpID | Name | City | Age | Salary |
---|---|---|---|---|
3 | Jo | Paris | 27 | 2800 |
6 | Huang | Beijing | 28 | 2800 |