IN Operator อนุญาตให้คุณระบุค่าหลายค่าใน WHERE ส่วนคำสั่งเดียวและยังเป็นการ ชวเลข สำหรับหลายเงื่อนไขอย่าง OR condition
ตัวอย่าง
ส่งคืนลูกค้าทั้งหมดจาก ‘Germany’, ‘France’, or ‘UK’
SELECT * FROM Customers
WHERE Country IN ('Germany', 'France', 'UK');
Syntax
SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1, value2, ...);
Demo Database
ด้านล่างนี้คือการเลือกจากตาราง Customers ที่ใช้ในตัวอย่าง:
CustomerID | CustomerName | ContactName | Address | City | PostalCode | Country |
---|---|---|---|---|---|---|
1 | Alfreds Futterkiste | Maria Anders | Obere Str. 57 | Berlin | 12209 | Germany |
2 | Ana Trujillo Emparedados y helados | Ana Trujillo | Avda. de la Constitución 2222 | México D.F. | 05021 | Mexico |
3 | Antonio Moreno Taquería | Antonio Moreno | Mataderos 2312 | México D.F. | 05023 | Mexico |
4 | Around the Horn | Thomas Hardy | 120 Hanover Sq. | London | WA1 1DP | UK |
5 | Berglunds snabbköp | Christina Berglund | Berguvsvägen 8 | Luleå | S-958 22 | Sweden |
NOT IN
การใช้คีย์เวิร์ด NOT ข้างหน้า IN operator คุณจะส่งคืนเรคคอร์ดทั้งหมดที่ไม่ใช่ค่าใด ๆ ในรายการ
ตัวอย่าง
ส่งคืนลูกค้าทั้งหมดที่ไม่ได้มาจาก ‘Germany’, ‘France’, ot ‘UK’:
SELECT * FROM Customers
WHERE CustomerID NOT IN (SELECT CustomerID FROM Orders);
IN (SELECT)
อีกทั้งคุณยังสามารถใช้ IN กัับ subquery ใน WHERE clause ด้วย sub query คุณสามารถส่งค่าคืนเรคคอร์ดทั้งหมด
ตัวอย่าง
ส่งคืนลูกค้าทั้งหมดที่มีคำสั่งซื้อในตาราง Orders :
SELECT * FROM Customers
WHERE CustomerID IN (SELECT CustomerID FROM Orders);
NOT IN (SELECT)
ผลลัพธ์ในตัวอย่างข้างต้นส่งคืนเรคคอร์ด 74 รายการ ซึ่งหมายความว่ามีลูกค้า 17 รายที่ยังไม่ได้ส่งคำสั่งซื้อใดๆ
ให้เราตรวจสอบว่าถูกต้องหรือไม่โดยใช้ NOT IN
ตัวอย่าง
ส่งคืนลูกค้าทั้งหมดที่ไม่ได้วางคำสั่งซื้อใดๆในตาราง Orders :
SELECT * FROM Customers
WHERE CustomerID NOT IN (SELECT CustomerID FROM Orders);