MySQL การใช้งานโอเปอเรเตอร์ IN

IN เป็นโอเปอเรเตอร์ที่ใช้ใน SQL เพื่อตรวจสอบค่าว่าอยู่ในชุดของค่าที่กำหนดไว้หรือไม่
ใช้ได้กับข้อมูลประเภทตัวเลข ข้อความ และแม้แต่ผลลัพธ์จาก SELECT

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

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

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

แสดงภาพยนตร์ที่มีเรตติ้งเป็น 'G', 'PG', หรือ 'PG-13'

SQL
SELECT title, rating
FROM film
WHERE rating IN ('G', 'PG', 'PG-13');
  • แสดงเฉพาะภาพยนตร์ที่ rating อยู่ในกลุ่มค่าที่ระบุไว้

จะได้ผลลัพธ์เหมือนการกำหนดเงื่อนไขแบบนี้

WHERE rating = 'G' OR rating = 'PG' OR rating = 'PG-13';

แสดงลูกค้าที่มีรหัสที่อยู่ address_id เท่ากับ 5, 6 หรือ 7

SQL
SELECT first_name, last_name, address_id
FROM customer
WHERE address_id IN (5, 6, 7);

ใช้ NOT IN เพื่อแสดงภาพยนตร์ที่ ไม่ใช่ เรต R และ NC-17

SQL
SELECT title, rating
FROM film
WHERE rating NOT IN ('R', 'NC-17');
  • ใช้ NOT IN เพื่อ “ยกเว้น” ค่าที่ไม่ต้องการ

IN กับ Subquery

นอกจากใช้กับรายการแบบกำหนดเองแล้ว IN ยังสามารถใช้ร่วมกับผลลัพธ์จาก SELECT ย่อย (subquery) ได้ด้วย เช่น

SQL
SELECT first_name, last_name
FROM customer
WHERE customer_id IN (
  SELECT customer_id
  FROM payment
  WHERE amount > 10
);
  • แสดงชื่อลูกค้าที่เคยชำระเงินมากกว่า 10 ดอลลาร์

ข้อควรระวัง: ควรหลีกเลี่ยงการใช้ IN กับ subquery ที่มี NULL เพราะอาจทำให้ผลลัพธ์ไม่ถูกต้อง

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