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

วิธีค้นหาข้อมูลด้วย LastName โดยใช้ MySQL IN()

การใช้งานคำสั่ง IN() ใน MySQL

คำสั่ง IN() ใช้สำหรับตรวจสอบว่าค่าในคอลัมน์ตรงกับค่าใดค่าหนึ่งในรายการที่กำหนด ทำงานคล้ายกับการใช้ OR หลายครั้ง แต่เขียนสั้นกว่าและอ่านง่ายกว่า

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

SELECT * FROM table_name WHERE column_name IN (value1, value2, value3, ...);

ตัวอย่าง: ค้นหาข้อมูลจากนามสกุลเฉพาะ

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

CREATE TABLE DemoTable (
    FirstName VARCHAR(100),
    LastName VARCHAR(100)
);

INSERT INTO DemoTable VALUES ('Adam', 'Smith');
INSERT INTO DemoTable VALUES ('John', 'Doe');
INSERT INTO DemoTable VALUES ('John', 'Smith');
INSERT INTO DemoTable VALUES ('Chris', 'Brown');
INSERT INTO DemoTable VALUES ('Robert', 'Brown');
INSERT INTO DemoTable VALUES ('David', 'Miller');

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

SELECT * FROM DemoTable;

ผลลัพธ์:

+-----------+----------+
| FirstName | LastName |
+-----------+----------+
| Adam      | Smith    |
| John      | Doe      |
| John      | Smith    |
| Chris     | Brown    |
| Robert    | Brown    |
| David     | Miller   |
+-----------+----------+

3. ค้นหาข้อมูลที่นามสกุลเป็น Smith, Brown หรือ Miller

SELECT * FROM DemoTable WHERE LastName IN ('Smith', 'Brown', 'Miller');

ผลลัพธ์:

+-----------+----------+
| FirstName | LastName |
+-----------+----------+
| Adam      | Smith    |
| John      | Smith    |
| Chris     | Brown    |
| Robert    | Brown    |
| David     | Miller   |
+-----------+----------+

เทียบกับการใช้ OR

คำสั่งด้านบนเทียบเท่ากับ:

SELECT * FROM DemoTable 
WHERE LastName = 'Smith' 
   OR LastName = 'Brown' 
   OR LastName = 'Miller';

ข้อดีของ IN()

  • โค้ดสั้นกว่าและอ่านง่ายกว่า
  • ประสิทธิภาพดีกว่าในบางกรณี (Optimizer จัดการได้ดีกว่า)
  • ง่ายต่อการแก้ไข เพียงเพิ่ม/ลบค่าในวงเล็บ
  • รองรับ Subquery ได้: WHERE LastName IN (SELECT LastName FROM OtherTable)

ข้อจำกัด

  • ไม่ควรใส่ค่ามากเกินไป (หลายพันค่า) เพราะอาจส่งผลต่อประสิทธิภาพ
  • ค่าที่เป็น NULL ในรายการ IN() จะไม่จับคู่กับ NULL ในคอลัมน์ (ต้องใช้ IS NULL แทน)