โอเปอเรเตอร์ ALL ใช้เพื่อเปรียบเทียบค่ากับทุกค่าที่อยู่ในผลลัพธ์ของคำสั่งย่อย (subquery) โดยปกติแล้วจะใช้ร่วมกับตัวดำเนินการเปรียบเทียบ เช่น =, >, <, >=, <=, และ <> เพื่อกำหนดเงื่อนไขการเปรียบเทียบค่ากับทุกค่าในชุดข้อมูลย่อย
รูปแบบการใช้งานของ ALL
SELECT column_name
FROM table_name
WHERE column_name comparison_operator ALL (subquery);
สร้างตารางข้อมูลตัวอย่าง
สร้างตารางชื่อว่า Employees สำหรับเก็บข้อมูลของพนักงาน และแทรกข้อมูลเข้าไปในตารางด้วยคำสั่งดังนี้
CREATE TABLE Employees (
EmployeeID INT PRIMARY KEY,
EmployeeName VARCHAR(50),
Department VARCHAR(50),
Salary INT
);
INSERT INTO Employees (EmployeeID, EmployeeName, Department, Salary) VALUES
(1, 'John Doe', 'Sales', 50000),
(2, 'Jane Smith', 'Sales', 55000),
(3, 'Mike Johnson', 'HR', 60000),
(4, 'Emily Davis', 'HR', 65000),
(5, 'Chris Lee', 'IT', 70000);ข้อมูลในตาราง Employees จะเป็นดังนี้

การใช้งานโอเปอเรเตอร์ ALL
ใช้ ALL กับตัวดำเนินการมากกว่า (>)
หาพนักงานที่มีเงินเดือนมากกว่าทุกคนในแผนก Sales โดยใช้ ALL
SELECT EmployeeName, Salary
FROM Employees
WHERE Salary > ALL (SELECT Salary FROM Employees WHERE Department = 'Sales');- คำสั่งนี้จะเลือกพนักงานที่มีเงินเดือนมากกว่าพนักงานทุกคนในแผนก
Salesโดยใช้ALLเปรียบเทียบกับทุกค่าจากคำสั่งย่อย (subquery) ซึ่งจะดึงเงินเดือนของพนักงานในแผนกSalesมาใช้ในการเปรียบเทียบ
ผลลัพธ์

ใช้ ALL กับตัวดำเนินการเท่ากับ (=)
สมมติเราต้องการหาพนักงานที่มีเงินเดือนเท่ากับพนักงานทุกคนในแผนก Sales ซึ่งในกรณีนี้จะไม่มีพนักงานคนใดที่มีเงินเดือนเท่ากับทุกคนในแผนก Sales
SELECT EmployeeName, Salary
FROM Employees
WHERE Salary = ALL (SELECT Salary FROM Employees WHERE Department = 'Sales');- คำสั่งนี้จะเลือกพนักงานที่มีเงินเดือนเท่ากับพนักงานทุกคนในแผนก
Salesซึ่งเป็นการเปรียบเทียบว่าเงินเดือนของพนักงานแต่ละคนในแผนกSalesต้องเท่ากันทั้งหมดถึงจะได้ผลลัพธ์
ผลลัพธ์
ไม่มีผลลัพธ์ เนื่องจากพนักงานในแผนก Sales มีเงินเดือนต่างกัน (50,000 และ 55,000)
ใช้ ALL กับตัวดำเนินการไม่เท่ากับ (<>)
หาพนักงานที่มีเงินเดือนไม่เท่ากับเงินเดือนของทุกคนในแผนก HR
SELECT EmployeeName, Salary
FROM Employees
WHERE Salary <> ALL (SELECT Salary FROM Employees WHERE Department = 'HR');- คำสั่งนี้จะเลือกพนักงานที่มีเงินเดือนไม่เท่ากับเงินเดือนของพนักงานทุกคนในแผนก
HRโดยใช้ALLเพื่อเปรียบเทียบว่าเงินเดือนของพนักงานที่ถูกเลือกต้องไม่เท่ากับพนักงานในแผนกHRเลยแม้แต่คนเดียว
ผลลัพธ์

ใช้ ALL กับตัวดำเนินการน้อยกว่า (<)
หาพนักงานที่มีเงินเดือนน้อยกว่าทุกคนในแผนก IT
SELECT EmployeeName, Salary
FROM Employees
WHERE Salary < ALL (SELECT Salary FROM Employees WHERE Department = 'IT');- คำสั่งนี้จะเลือกพนักงานที่มีเงินเดือนน้อยกว่าพนักงานทุกคนในแผนก
IT
ผลลัพธ์

