คิวรีด้วย EXISTS

การตัดสินใจเชิงข้อมูลด้วย SQL

Irene Ortner

Data Scientist at Applied Statistics

EXISTS

  • กรณีพิเศษของ correlated nested query
  • ใช้ตรวจสอบว่าผลลัพธ์ของ correlated nested query ว่างเปล่าหรือไม่
  • คืนค่า: TRUE หรือ FALSE
  • TRUE = ไม่ว่างเปล่า -> แถวของ outer query ถูกเลือก
  • FALSE = ว่างเปล่า
  • ไม่พิจารณาคอลัมน์ใน SELECT — ใช้ SELECT *
การตัดสินใจเชิงข้อมูลด้วย SQL

ภาพยนตร์ที่มีการให้คะแนนอย่างน้อยหนึ่งครั้ง

SELECT *
FROM movies AS m
WHERE EXISTS
    (SELECT *
     FROM renting AS r
     WHERE rating IS NOT NULL 
     AND r.movie_id = m.movie_id);
การตัดสินใจเชิงข้อมูลด้วย SQL

ภาพยนตร์ที่มีการให้คะแนนอย่างน้อยหนึ่งครั้ง

SELECT *
FROM renting AS r
WHERE rating IS NOT NULL 
AND r.movie_id = 11;
| renting_id | customer_id | movie_id | rating | renting_price |
|------- ----|-------------|----------|--------|---------------|
การตัดสินใจเชิงข้อมูลด้วย SQL

ภาพยนตร์ที่มีการให้คะแนนอย่างน้อยหนึ่งครั้ง

SELECT *
FROM renting AS r
WHERE rating IS NOT NULL 
AND r.movie_id = 1;
| renting_id | customer_id | movie_id | rating | renting_price |
|------------|-------------|----------|--------|---------------|
| 71         | 111         | 1        | 5      | 2018-07-21    |
| 170        | 36          | 1        | 10     | 2018-10-18    |
การตัดสินใจเชิงข้อมูลด้วย SQL

คิวรี EXISTS พร้อมผลลัพธ์

SELECT *
FROM movies AS m
WHERE EXISTS
    (SELECT *
     FROM renting AS r
     WHERE rating IS NOT NULL 
     AND r.movie_id = m.movie_id);
| movie_id | title                 | genre  | runtime | year_of_release | renting_price |
|----------|-----------------------|--------|---------|-----------------|---------------|
| 1        | One Night at McCool's | Comedy | 93      | 2001            | 2.09          |
| 2        | Swordfish             | Drama  | 99      | 2001            | 2.19          |
การตัดสินใจเชิงข้อมูลด้วย SQL

NOT EXISTS

  • TRUE = ตารางว่างเปล่า -> แถวของ outer query ถูกเลือก
SELECT *
FROM movies AS m
WHERE NOT EXISTS
    (SELECT *
     FROM renting AS r
     WHERE rating IS NOT NULL 
     AND r.movie_id = m.movie_id);
| movie_id | title    | genre  | runtime | year_of_release | renting_price |
|----------|----------|--------|---------|-----------------|---------------|
| 11       | Showtime | Comedy | 95      | 2002            | 1.79          |
การตัดสินใจเชิงข้อมูลด้วย SQL

มาฝึกกันเถอะ!

การตัดสินใจเชิงข้อมูลด้วย SQL

Preparing Video For Download...