Skip to main content

เนื้อหาภาษาไทย / Thai content

System guide Content reviewed

Clause WHERE คืออะไร?

บทความนี้อธิบายถึง `WHERE` Clause ซึ่งเป็นส่วนสำคัญของคำสั่ง `SELECT` ใน SQL ที่ใช้ในการกรองข้อมูลตามเงื่อนไขที่กำหนด โดยเงื่อนไขเหล่านี้จะประกอบด้วยชื่อคอลัมน์...

Clause WHERE คืออะไร?

หลังจากที่เราได้เรียนรู้วิธีการดึงข้อมูลจากตารางด้วยคำสั่ง SELECT ในบทที่แล้ว คราวนี้เราจะมาเจาะลึกถึงวิธีการกรองข้อมูลที่เราต้องการให้แม่นยำยิ่งขึ้น โดยใช้สิ่งที่เรียกว่า WHERE Clause

WHERE Clause คือส่วนหนึ่งของคำสั่ง SELECT ที่ช่วยให้เราสามารถกำหนดเงื่อนไข (condition) ในการดึงข้อมูลได้ นั่นหมายความว่า เราสามารถบอก MySQL ได้ว่า "ให้ดึงข้อมูลเฉพาะแถวที่ตรงตามเงื่อนไขที่กำหนดเท่านั้น"

โครงสร้างของ WHERE Clause

โดยทั่วไป โครงสร้างของ WHERE Clause จะเป็นดังนี้:

SELECT column1, column2, ...
FROM table_name
WHERE condition;

  • SELECT column1, column2, ...: คือส่วนที่เราเลือกคอลัมน์ที่ต้องการดึงข้อมูล (เหมือนกับที่เราเรียนไปในบทที่แล้ว)
  • FROM table_name: คือส่วนที่เรากำหนดชื่อตารางที่เราต้องการดึงข้อมูล
  • WHERE condition: คือส่วนที่เรากำหนดเงื่อนไขในการกรองข้อมูล นี่คือหัวใจหลักของบทเรียนนี้

WHERE Condition

condition ใน WHERE Clause คือนิพจน์ (expression) ที่ให้ผลลัพธ์เป็นจริง (TRUE) หรือเท็จ (FALSE) MySQL จะดึงข้อมูลเฉพาะแถวที่ทำให้ condition เป็นจริงเท่านั้น

condition มักจะประกอบด้วย:

  • ชื่อคอลัมน์ (column name)
  • ตัวดำเนินการ (operator) เช่น =, >, <, >=, <=, !=, <>
  • ค่า (value) ที่เราต้องการเปรียบเทียบ

ตัวอย่างเช่น:

WHERE age > 18

ในตัวอย่างนี้ age คือชื่อคอลัมน์, > คือตัวดำเนินการ (มากกว่า), และ 18 คือค่าที่เราต้องการเปรียบเทียบ MySQL จะดึงข้อมูลเฉพาะแถวที่ค่าในคอลัมน์ age มากกว่า 18 เท่านั้น

ตัวอย่างการใช้งาน WHERE Clause

สมมติว่าเรามีตารางชื่อ customers ที่มีข้อมูลลูกค้าดังนี้:

CREATE TABLE customers (
    id INT PRIMARY KEY,
    name VARCHAR(255),
    age INT,
    city VARCHAR(255)
);

INSERT INTO customers (id, name, age, city) VALUES
(1, 'Alice', 30, 'New York'),
(2, 'Bob', 25, 'London'),
(3, 'Charlie', 35, 'Paris'),
(4, 'David', 28, 'New York'),
(5, 'Eve', 22, 'London');

ตัวอย่างที่ 1: ดึงข้อมูลลูกค้าที่อาศัยอยู่ใน New York

SELECT *
FROM customers
WHERE city = 'New York';

ผลลัพธ์:

+----+-------+-----+----------+
| id | name  | age | city     |
+----+-------+-----+----------+
|  1 | Alice |  30 | New York |
|  4 | David |  28 | New York |
+----+-------+-----+----------+

คำอธิบาย: คำสั่งนี้จะดึงข้อมูลทั้งหมดจากตาราง customers เฉพาะแถวที่ค่าในคอลัมน์ city เท่ากับ 'New York'

ตัวอย่างที่ 2: ดึงข้อมูลลูกค้าที่มีอายุมากกว่า 25 ปี

SELECT *
FROM customers
WHERE age > 25;

ผลลัพธ์:

+----+---------+-----+-------+
| id | name    | age | city  |
+----+---------+-----+-------+
|  1 | Alice   |  30 | New York |
|  3 | Charlie |  35 | Paris    |
|  4 | David   |  28 | New York |
+----+---------+-----+-------+

คำอธิบาย: คำสั่งนี้จะดึงข้อมูลทั้งหมดจากตาราง customers เฉพาะแถวที่ค่าในคอลัมน์ age มากกว่า 25

ตัวอย่างที่ 3: ดึงข้อมูลชื่อและเมืองของลูกค้าที่มีอายุน้อยกว่าหรือเท่ากับ 25 ปี

SELECT name, city
FROM customers
WHERE age <= 25;

ผลลัพธ์:

+------+--------+
| name | city   |
+------+--------+
| Bob  | London |
| Eve  | London |
+------+--------+

คำอธิบาย: คำสั่งนี้จะดึงเฉพาะคอลัมน์ name และ city จากตาราง customers เฉพาะแถวที่ค่าในคอลัมน์ age น้อยกว่าหรือเท่ากับ 25

Operators ใน WHERE Clause

นอกเหนือจากตัวดำเนินการ =, >, <, >=, <= แล้ว ยังมีตัวดำเนินการอื่นๆ ที่เราสามารถใช้ใน WHERE Clause ได้อีกมากมาย ซึ่งเราจะมาดูกันในรายละเอียด

Comparison Operators:

  • =: เท่ากับ
  • >: มากกว่า
  • <: น้อยกว่า
  • >=: มากกว่าหรือเท่ากับ
  • <=: น้อยกว่าหรือเท่ากับ
  • != หรือ <>: ไม่เท่ากับ

Logical Operators:

  • AND: และ (ทั้งสองเงื่อนไขต้องเป็นจริง)
  • OR: หรือ (เงื่อนไขใดเงื่อนไขหนึ่งเป็นจริง)
  • NOT: ไม่ (เปลี่ยนค่าจริงเป็นเท็จ และเท็จเป็นจริง)

Special Operators:

  • BETWEEN: อยู่ในช่วง (Inclusive)
  • LIKE: เปรียบเทียบรูปแบบ (Pattern Matching)
  • IN: อยู่ในชุดของค่า
  • IS NULL: เป็นค่าว่าง (NULL)
  • IS NOT NULL: ไม่เป็นค่าว่าง (NULL)

เราจะมาดูตัวอย่างการใช้งานตัวดำเนินการเหล่านี้:

ตัวอย่างที่ 4: ใช้ AND เพื่อกรองข้อมูล

SELECT *
FROM customers
WHERE city = 'New York' AND age > 28;

ผลลัพธ์:

+----+-------+-----+----------+
| id | name  | age | city     |
+----+-------+-----+----------+
|  1 | Alice |  30 | New York |
+----+-------+-----+----------+

คำอธิบาย: คำสั่งนี้จะดึงข้อมูลลูกค้าที่อาศัยอยู่ใน New York และมีอายุมากกว่า 28 ปี

ตัวอย่างที่ 5: ใช้ OR เพื่อกรองข้อมูล

SELECT *
FROM customers
WHERE city = 'London' OR age > 30;

ผลลัพธ์:

+----+---------+-----+----------+
| id | name    | age | city     |
+----+---------+-----+----------+
|  2 | Bob     |  25 | London   |
|  3 | Charlie |  35 | Paris    |
|  5 | Eve     |  22 | London   |
+----+---------+-----+----------+

คำอธิบาย: คำสั่งนี้จะดึงข้อมูลลูกค้าที่อาศัยอยู่ใน London หรือมีอายุมากกว่า 30 ปี

ตัวอย่างที่ 6: ใช้ NOT เพื่อกรองข้อมูล

SELECT *
FROM customers
WHERE NOT city = 'New York';

ผลลัพธ์:

+----+---------+-----+--------+
| id | name    | age | city   |
+----+---------+-----+--------+
|  2 | Bob     |  25 | London |
|  3 | Charlie |  35 | Paris  |
|  5 | Eve     |  22 | London |
+----+---------+-----+--------+

คำอธิบาย: คำสั่งนี้จะดึงข้อมูลลูกค้าที่ไม่ได้อาศัยอยู่ใน New York

Comparison กับ String

เมื่อเราเปรียบเทียบค่าในคอลัมน์ที่เป็น String (ข้อความ) กับค่าที่เราต้องการ จะต้องใส่ค่าที่เราต้องการเปรียบเทียบไว้ในเครื่องหมาย Single quote (') หรือ Double quote (") เช่น WHERE city = 'New York' หรือ WHERE city = "New York"

สิ่งที่ควรระวังคือ การใช้เครื่องหมาย Single quote หรือ Double quote จะต้องสอดคล้องกัน หากเริ่มต้นด้วย Single quote ก็ต้องจบด้วย Single quote เช่นกัน

ในบทต่อไป เราจะมาเจาะลึกถึง Operators อื่นๆ ใน WHERE Clause เช่น LIKE, IN, BETWEEN และการใช้งานที่ซับซ้อนยิ่งขึ้น เพื่อให้เราสามารถกรองข้อมูลได้อย่างมีประสิทธิภาพมากยิ่งขึ้น

Office.in.th Custom Service

Want to build or adapt a system from this structure?

Office.in.th designs and develops enterprise web applications, API integrations, and public- and private-sector management systems, with long-term support.

See our software development service