How the ALL keyword works : ALL « Query « SQL Server / T-SQL Tutorial






Condition               Equivalent expression
x > ALL (1, 2)          x > 2
x < ALL (1, 2)          x < 1
x = ALL (1, 2)          (x = 1) AND (x = 2)
x <> ALL (1, 2)         (x <> 1) AND (x <> 2)




14>
15>
16>
17> create table Billings (
18>     BankerID           INTEGER,
19>     BillingNumber      INTEGER,
20>     BillingDate        datetime,
21>     BillingTotal       INTEGER,
22>     TermsID            INTEGER,
23>     BillingDueDate     datetime ,
24>     PaymentTotal       INTEGER,
25>     CreditTotal        INTEGER
26>
27> );
28> GO
1>
2> INSERT INTO Billings VALUES (1, 1, '2005-01-22', 165, 1,'2005-04-22',123,321);
3> GO

(1 rows affected)
1> INSERT INTO Billings VALUES (2, 2, '2001-02-21', 165, 1,'2002-02-22',123,321);
2> GO

(1 rows affected)
1> INSERT INTO Billings VALUES (3, 3, '2003-05-02', 165, 1,'2005-04-12',123,321);
2> GO

(1 rows affected)
1> INSERT INTO Billings VALUES (4, 4, '1999-03-12', 165, 1,'2005-04-18',123,321);
2> GO

(1 rows affected)
1> INSERT INTO Billings VALUES (5, 5, '2000-04-23', 165, 1,'2005-04-17',123,321);
2> GO

(1 rows affected)
1> INSERT INTO Billings VALUES (6, 6, '2001-06-14', 165, 1,'2005-04-18',123,321);
2> GO

(1 rows affected)
1> INSERT INTO Billings VALUES (7, 7, '2002-07-15', 165, 1,'2005-04-19',123,321);
2> GO

(1 rows affected)
1> INSERT INTO Billings VALUES (8, 8, '2003-08-16', 165, 1,'2005-04-20',123,321);
2> GO

(1 rows affected)
1> INSERT INTO Billings VALUES (9, 9, '2004-09-17', 165, 1,'2005-04-21',123,321);
2> GO

(1 rows affected)
1> INSERT INTO Billings VALUES (0, 0, '2005-10-18', 165, 1,'2005-04-22',123,321);
2> GO

(1 rows affected)
1>
2>
3>
4> create table Bankers(
5>    BankerID             Integer,
6>    BankerName           VARCHAR(20),
7>    BankerContactLName   VARCHAR(20),
8>    BankerContactFName   VARCHAR(20),
9>    BankerCity           VARCHAR(20),
10>    BankerState          VARCHAR(20),
11>    BankerZipCode        VARCHAR(20),
12>    BankerPhone          VARCHAR(20)
13> )
14> GO
1>
2> insert into Bankers values (1, 'ABC Inc.','Joe','Smith','Vancouver','BC','11111','111-111-1111');
3> GO

(1 rows affected)
1> insert into Bankers values (2, 'DEF Inc.','Red','Rice', 'New York', 'DE','22222','222-222-2222');
2> GO

(1 rows affected)
1> insert into Bankers values (3, 'HJI Inc.','Kit','Cat',  'Paris',    'CA','33333','333-333-3333');
2> GO

(1 rows affected)
1> insert into Bankers values (4, 'QWE Inc.','Git','Black','Regina',   'ER','44444','444-444-4444');
2> GO

(1 rows affected)
1> insert into Bankers values (5, 'RTY Inc.','Wil','Lee',  'Toronto',  'YU','55555','555-555-5555');
2> GO

(1 rows affected)
1> insert into Bankers values (6, 'YUI Inc.','Ted','Larry','Calgary',  'TY','66666','666-666-6666');
2> GO

(1 rows affected)
1> insert into Bankers values (7, 'OIP Inc.','Yam','Act',  'San Franc','FG','77777','777-777-7777');
2> GO

(1 rows affected)
1> insert into Bankers values (8, 'SAD Inc.','Hit','Eat',  'Orland',   'PO','88888','888-888-8888');
2> GO

(1 rows affected)
1> insert into Bankers values (9, 'DFG Inc.','Sad','Lee',  'Wisler',   'PL','99999','999-999-9999');
2> GO

(1 rows affected)
1> insert into Bankers values (0, 'GHJ Inc.','Bit','Lee',  'Ticker',   'MN','00000','000-000-0000');
2> GO

(1 rows affected)
1>
2>
3> SELECT BankerName, BillingNumber, BillingTotal
4> FROM Billings JOIN Bankers ON Billings.BankerID = Bankers.BankerID
5> WHERE BillingTotal > ALL
6>     (SELECT BillingTotal
7>     FROM Billings
8>     WHERE BankerID = 34)
9> ORDER BY BankerName
10> GO
BankerName           BillingNumber BillingTotal
-------------------- ------------- ------------
ABC Inc.                         1          165
DEF Inc.                         2          165
DFG Inc.                         9          165
GHJ Inc.                         0          165
HJI Inc.                         3          165
OIP Inc.                         7          165
QWE Inc.                         4          165
RTY Inc.                         5          165
SAD Inc.                         8          165
YUI Inc.                         6          165

(10 rows affected)
1>
2> drop table Billings;
3> drop table Bankers;
4> GO








1.16.ALL
1.16.1.The ALL predicate is more restrictive, in that all of the values inside the subquery must satisfy the comparison condition.
1.16.2.Finding the Most Recently Shipped Employee Using ALL
1.16.3.Finding the Most Recently Shipped Employee Using ALL with NULL Handling
1.16.4.Finding the Last Row in Employee Using ALL
1.16.5.Finding the First Order for Each Customer Using the ALL Predicate
1.16.6.A SELECT statement that returns all rows
1.16.7.How the ALL keyword works
1.16.8.The ALL operator evaluates to true if the evaluation of the table column in the inner query returns all values of that column.