SQL การใช้งาน ALL Operator

โอเปอเรเตอร์ ALL ใช้เพื่อเปรียบเทียบค่ากับทุกค่าที่อยู่ในผลลัพธ์ของคำสั่งย่อย (subquery) โดยปกติแล้วจะใช้ร่วมกับตัวดำเนินการเปรียบเทียบ เช่น =, >, <, >=, <=, และ <> เพื่อกำหนดเงื่อนไขการเปรียบเทียบค่ากับทุกค่าในชุดข้อมูลย่อย

รูปแบบการใช้งานของ ALL

SELECT column_name
FROM table_name
WHERE column_name comparison_operator ALL (subquery);

สร้างตารางข้อมูลตัวอย่าง

สร้างตารางชื่อว่า Employees สำหรับเก็บข้อมูลของพนักงาน และแทรกข้อมูลเข้าไปในตารางด้วยคำสั่งดังนี้

SQL
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

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

ผลลัพธ์

ใช้ ALL กับตัวดำเนินการเท่ากับ (=)

สมมติเราต้องการหาพนักงานที่มีเงินเดือนเท่ากับพนักงานทุกคนในแผนก Sales ซึ่งในกรณีนี้จะไม่มีพนักงานคนใดที่มีเงินเดือนเท่ากับทุกคนในแผนก Sales

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

ผลลัพธ์

ไม่มีผลลัพธ์ เนื่องจากพนักงานในแผนก Sales มีเงินเดือนต่างกัน (50,000 และ 55,000)

ใช้ ALL กับตัวดำเนินการไม่เท่ากับ (<>)

หาพนักงานที่มีเงินเดือนไม่เท่ากับเงินเดือนของทุกคนในแผนก HR

SQL
SELECT EmployeeName, Salary
FROM Employees
WHERE Salary <> ALL (SELECT Salary FROM Employees WHERE Department = 'HR');
  • คำสั่งนี้จะเลือกพนักงานที่มีเงินเดือนไม่เท่ากับเงินเดือนของพนักงานทุกคนในแผนก HR โดยใช้ ALL เพื่อเปรียบเทียบว่าเงินเดือนของพนักงานที่ถูกเลือกต้องไม่เท่ากับพนักงานในแผนก HR เลยแม้แต่คนเดียว

ผลลัพธ์

ใช้ ALL กับตัวดำเนินการน้อยกว่า (<)

หาพนักงานที่มีเงินเดือนน้อยกว่าทุกคนในแผนก IT

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

ผลลัพธ์

แชร์เรื่องนี้