WHERE Clause ใน SQL ใช้เพื่อกรองข้อมูลตามเงื่อนไขที่กำหนด โดยจะเลือกเฉพาะแถว (rows) ที่ตรงตามเงื่อนไขที่ระบุไว้เท่านั้น และสามารถใช้งานกับคำสั่ง SQL หลัก ๆ เช่น SELECT, UPDATE, DELETE ได้
การใช้งาน WHERE Clause
ตัวอย่างการใช้งานของ WHERE Clause ที่สามารถประยุกต์ใช้ได้มีดังนี้
1. การเปรียบเทียบค่า
สามารถใช้เครื่องหมายเปรียบเทียบ เช่น =, >, <, >=, <=, <> (ไม่เท่ากับ) ดังตัวอย่าง
SELECT * FROM employees
WHERE salary > 50000;คำสั่งนี้จะเลือกข้อมูลจากตาราง employees เฉพาะพนักงานที่มีเงินเดือนมากกว่า 50,000
2. การใช้กับ AND, OR
สามารถใช้เงื่อนไขหลายเงื่อนไขร่วมกัน โดยใช้ AND (ทุกเงื่อนไขต้องเป็นจริง) หรือ OR (เงื่อนไขใดเงื่อนไขหนึ่งเป็นจริง) ดังตัวอย่าง
SELECT * FROM employees
WHERE salary > 50000 AND department = 'IT';คำสั่งนี้จะเลือกพนักงานที่มีเงินเดือนมากกว่า 50,000 และทำงานในแผนก IT
SELECT * FROM employees
WHERE department = 'IT' OR department = 'HR';คำสั่งนี้จะเลือกพนักงานที่อยู่ในแผนก IT หรือ HR
3. การใช้กับ BETWEEN
สามารถใช้ BETWEEN เพื่อเลือกข้อมูลที่อยู่ระหว่างช่วงตัวเลข ดังตัวอย่าง
SELECT * FROM employees
WHERE salary BETWEEN 40000 AND 60000;คำสั่งนี้จะเลือกพนักงานที่มีเงินเดือนอยู่ระหว่าง 40,000 ถึง 60,000
4. การใช้กับ IN
ใช้ IN เพื่อตรวจสอบค่าที่อยู่ในลิสต์ของค่าที่กำหนด ดังตัวอย่าง
SELECT * FROM employees
WHERE department IN ('IT', 'HR', 'Finance');คำสั่งนี้จะเลือกพนักงานที่อยู่ในแผนก IT, HR หรือ Finance
5. การใช้กับ LIKE
ใช้ LIKE เพื่อค้นหาข้อความที่ตรงตามรูปแบบ (pattern) ที่ระบุ
%แทนตัวอักษรใด ๆ จำนวนเท่าไหร่ก็ได้_แทนตัวอักษรเพียงตัวเดียว
SELECT * FROM employees
WHERE name LIKE 'J%';คำสั่งนี้จะเลือกพนักงานที่ชื่อขึ้นต้นด้วย ‘J’
SELECT * FROM employees
WHERE name LIKE '_mith';คำสั่งนี้จะเลือกพนักงานที่มีชื่อลงท้ายด้วย ‘mith’ เช่น ‘Smith’
6. การใช้กับ IS NULL และ IS NOT NULL
ใช้ตรวจสอบค่าที่เป็น NULL หรือไม่เป็น NULL เช่น
SELECT * FROM employees
WHERE manager_id IS NULL;คำสั่งนี้จะเลือกพนักงานที่ไม่มีผู้จัดการ (ค่าของ manager_id เป็น NULL)
SELECT * FROM employees
WHERE manager_id IS NOT NULL;คำสั่งนี้จะเลือกพนักงานที่มีผู้จัดการ (ค่าของ manager_id ไม่เป็น NULL)
7. การใช้กับ EXISTS
ใช้ EXISTS เพื่อเช็คว่ามีผลลัพธ์จาก subquery หรือไม่
SELECT * FROM employees e
WHERE EXISTS (SELECT 1 FROM departments d WHERE d.id = e.department_id AND d.name = 'IT');คำสั่งนี้จะเลือกพนักงานที่ทำงานในแผนก IT โดยเช็คจากตาราง departments
8. การใช้กับ NOT
สามารถใช้ NOT ร่วมกับเงื่อนไขต่าง ๆ เพื่อแสดงผลลัพธ์ที่ไม่ตรงตามเงื่อนไข เช่น
SELECT * FROM employees
WHERE salary NOT BETWEEN 40000 AND 60000;คำสั่งนี้จะเลือกพนักงานที่มีเงินเดือนไม่อยู่ระหว่าง 40,000 ถึง 60,000
9. การใช้กับ ALL และ ANY
ALLใช้เพื่อเปรียบเทียบกับทุกค่าที่อยู่ใน subqueryANYใช้เพื่อเปรียบเทียบกับค่าหนึ่งค่าจากค่าทั้งหมดใน subquery
ตัวอย่าง
SELECT * FROM employees
WHERE salary > ALL (SELECT salary FROM employees WHERE department = 'HR');คำสั่งนี้จะเลือกพนักงานที่มีเงินเดือนมากกว่าพนักงานทุกคนในแผนก HR
SELECT * FROM employees
WHERE salary > ANY (SELECT salary FROM employees WHERE department = 'HR');คำสั่งนี้จะเลือกพนักงานที่มีเงินเดือนมากกว่าพนักงานบางคนในแผนก HR
