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

ใน SQL, ANY เป็นตัวดำเนินการที่ใช้เพื่อเปรียบเทียบค่ากับผลลัพธ์หลายค่า เช่น เมื่อเราต้องการตรวจสอบว่าค่าที่เราตรวจสอบตรงกับค่าใด ๆ ในเซ็ตของผลลัพธ์หรือไม่ โดย ANY จะทำงานร่วมกับคำสั่งเช่น SELECT, WHERE, หรือ HAVING ในการเปรียบเทียบค่า

โครงสร้างของ ANY Operator

expression operator ANY (subquery)
  • expression คือค่าที่เราต้องการเปรียบเทียบ
  • operator คือเครื่องหมายเปรียบเทียบ เช่น =, <, >, <=, >=, <>
  • subquery เป็นคำสั่งย่อยที่ส่งผลลัพธ์ออกมาเป็นเซ็ตของค่าหลายค่า

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

ใช้คำสั่งต่อไปนี้เพื่อสร้างตารางข้อมูลตัวอย่าง

SQL
-- สร้างตาราง Employees
CREATE TABLE Employees (
    EmployeeID INT PRIMARY KEY,
    EmployeeName VARCHAR(100),
    Salary DECIMAL(10, 2),
    DepartmentID INT
);

-- สร้างตาราง Departments
CREATE TABLE Departments (
    DepartmentID INT PRIMARY KEY,
    DepartmentName VARCHAR(100)
);

-- แทรกข้อมูลตัวอย่างลงในตาราง Employees
INSERT INTO Employees (EmployeeID, EmployeeName, Salary, DepartmentID)
VALUES 
(1, 'John Doe', 50000, 1),
(2, 'Jane Smith', 60000, 2),
(3, 'Jim Brown', 55000, 1),
(4, 'Jack White', 62000, 3);

-- แทรกข้อมูลตัวอย่างลงในตาราง Departments
INSERT INTO Departments (DepartmentID, DepartmentName)
VALUES
(1, 'HR'),
(2, 'IT'),
(3, 'Marketing');

การใช้งาน ANY

การเปรียบเทียบเงินเดือนของพนักงาน

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

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

ผลลัพธ์

การใช้ ANY กับเครื่องหมาย <

สมมุติว่าเราต้องการหาพนักงานที่มีเงินเดือนน้อยกว่าพนักงานคนใดคนหนึ่งในแผนก HR สามารถเขียนคำสั่งดังนี้

SQL
SELECT EmployeeName, Salary
FROM Employees
WHERE Salary < ANY (SELECT Salary FROM Employees WHERE DepartmentID = 1);
  • คำสั่งนี้จะคืนค่าพนักงานที่มีเงินเดือนน้อยกว่าพนักงานคนใดคนหนึ่ง ในแผนก HR (DepartmentID = 1)

ผลลัพธ์

การใช้ ANY กับเครื่องหมาย = เพื่อหาค่าที่ตรงกับค่าใดค่าหนึ่ง

เราสามารถใช้ ANY เพื่อหาพนักงานที่มีเงินเดือนตรงกับพนักงานคนใดคนหนึ่ง ในแผนก HR หรือ IT ดังนี้

SQL
SELECT EmployeeName, Salary
FROM Employees
WHERE Salary = ANY (SELECT Salary FROM Employees WHERE DepartmentID IN (1, 2));
  • คำสั่งนี้จะเลือกพนักงานที่มีเงินเดือนตรงกับพนักงานในแผนก HR หรือ IT (DepartmentID = 1 หรือ 2)

ผลลัพธ์

การใช้ ANY กับเครื่องหมาย <> (ไม่เท่ากับ)

เราสามารถใช้ ANY เพื่อหาพนักงานที่มีเงินเดือนไม่เท่ากับเงินเดือนของพนักงานคนใด ๆ ในแผนก Marketing

SQL
SELECT EmployeeName, Salary
FROM Employees
WHERE Salary <> ANY (SELECT Salary FROM Employees WHERE DepartmentID = 3);

คำสั่งนี้จะเลือกพนักงานที่มีเงินเดือนไม่เท่ากับพนักงานคนใด ๆ ในแผนก Marketing (DepartmentID = 3)

ผลลัพธ์

สรุป

ANY Operator สามารถประยุกต์ใช้งานได้หลากหลายตามสถานการณ์ที่ต้องการเปรียบเทียบค่ากับชุดของผลลัพธ์ที่ได้จาก subquery โดยใช้เครื่องหมายเปรียบเทียบที่เหมาะสม เช่น =, >, <, หรือ <> นอกจากนี้ยังสามารถใช้กับชุดข้อมูลที่อยู่ในฐานข้อมูลเดียวกันได้โดยตรง

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