Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

วิธีใช้เงื่อนไข 3 เงื่อนไขในคำสั่ง MySQL เดียวเพื่อค้นหารายการนักเรียน

การใช้ WHERE หลายเงื่อนไขด้วย AND ใน MySQL

เมื่อต้องการค้นหาแถวที่ตรงตามเงื่อนไขหลายอย่างพร้อมกัน ให้ใช้ AND เชื่อมเงื่อนไขแต่ละอย่างในคำสั่ง WHERE

รูปแบบคำสั่ง

SELECT * FROM table_name 
WHERE condition1 AND condition2 AND condition3 ...;

ตัวอย่าง: ค้นหานักเรียนที่ Id=4, ชื่อ Carol, อายุ 21

1. สร้างตารางและเพิ่มข้อมูล

CREATE TABLE DemoTable (
    StudentId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    StudentName VARCHAR(50),
    StudentAge INT
);

INSERT INTO DemoTable (StudentName, StudentAge) VALUES 
('Chris', 21), ('David', 23), ('Bob', 22), ('Carol', 21);

2. ดูข้อมูลทั้งหมด

SELECT * FROM DemoTable;

ผลลัพธ์:

+-----------+-------------+------------+
| StudentId | StudentName | StudentAge |
+-----------+-------------+------------+
| 1         | Chris       | 21         |
| 2         | David       | 23         |
| 3         | Bob         | 22         |
| 4         | Carol       | 21         |
+-----------+-------------+------------+

3. ค้นหาด้วย 3 เงื่อนไข

SELECT * FROM DemoTable 
WHERE StudentId = 4 
  AND StudentName = 'Carol' 
  AND StudentAge = 21;

ผลลัพธ์:

+-----------+-------------+------------+
| StudentId | StudentName | StudentAge |
+-----------+-------------+------------+
| 4         | Carol       | 21         |
+-----------+-------------+------------+

การทำงานของ AND

  • ทุกเงื่อนไขต้องเป็น TRUE พร้อมกัน (Logical AND)
  • MySQL ใช้ Short-circuit evaluation: หากเงื่อนไขแรก FALSE จะไม่ตรวจสอบต่อ
  • ลำดับเงื่อนไขส่งผลต่อประสิทธิภาพ: วางเงื่อนไขที่ Selective ที่สุด (กรองได้เยอะที่สุด) ไปก่อน

การใช้ OR (หรือ)

SELECT * FROM DemoTable 
WHERE StudentName = 'Chris' OR StudentName = 'Bob';

หา Chris หรือ Bob (ได้ 2 แถว)

ผสม AND และ OR (ต้องใช้วงเล็บ)

SELECT * FROM DemoTable 
WHERE (StudentName = 'Chris' OR StudentName = 'Bob') 
  AND StudentAge > 20;

ใช้ IN() แทน OR หลายค่า

SELECT * FROM DemoTable 
WHERE StudentName IN ('Chris', 'Bob') 
  AND StudentAge > 20;

Index และประสิทธิภาพ

  • สร้าง Composite Index ตามลำดับเงื่อนไขที่ใช้บ่อย: INDEX idx_name_age (StudentName, StudentAge)
  • EXPLAIN เพื่อดูว่า Index ถูกใช้หรือไม่
  • หากเงื่อนไขบน Primary Key (StudentId) → เร็วที่สุด (Point Lookup)