SQL Server (Transact-SQL) ALL 关键字与 WHERE 和 HAVING 子句。如果所有子查询值都满足条件,则返回 TRUE。
语法
在 SQL Server (Transact-SQL) 中使用 ALL 关键字的语法如下:
SELECT column1, column2, column3, ...
FROM table_name
WHERE column_name operator ALL
(SELECT column1, column2, ...
FROM table_name WHERE condition);
注意: 上述运算符必须是标准比较运算符(=、<>、!=、<、<=、> 或 >=) 。
示例:
考虑一个数据库,其中包含名为 Employee 和 Bonus_Paid 的表,并具有以下记录:
示例:
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:Bonus_Paid 表
EmpID | Bonus |
---|---|
1 | 500 |
2 | 400 |
3 | 450 |
4 | 550 |
5 | 400 |
6 | 600 |
要从Employee表中选择所有奖金小于500的员工,查询如下。
SELECT * FROM Employee
WHERE EmpID <> ALL
(SELECT EmpID
FROM Bonus_Paid WHERE Bonus >= 500);
子查询将产生以下结果:
EmpID |
---|
1 |
4 |
6 |
然后,查询将 EmpID 值与所有子查询值进行比较,并仅获取那些对所有子查询值都返回 true 的结果。它将产生以下结果:
EmpID | Name | City | Age | Salary |
---|---|---|---|---|
2 | Marry | London | 24 | 2750 |
3 | Jo | London | 27 | 2800 |
5 | Ramesh | New Delhi | 28 | 3000 |