MySQL EXISTS
SQL EXISTS 절은 하위 커리에 레코드 있으면 TRUE를 반환합니다.
하위 쿼리라 하면 WHERE 절에 밑에 SELECT 구문?? 이 있는걸 말합니다.
존재 구문
SELECT column_name(s)
FROM table_name
WHERE EXISTS
(SELECT column_name FROM table_name WHERE condition);
이렇게 WHERE절 밑에 SELECT구문이 있는걸 보실 수 있습니다. SELECT 하위 쿼리가 참이면
TRUE를 반환합니다.
ProductID | ProductName | SupplierID | CategoryID | Unit | Price |
---|---|---|---|---|---|
1 | Chais | 1 | 1 | 10 boxes x 20 bags | 18 |
2 | Chang | 1 | 1 | 24 - 12 oz bottles | 19 |
3 | Aniseed Syrup | 1 | 2 | 12 - 550 ml bottles | 10 |
4 | Chef Anton's Cajun Seasoning | 2 | 2 | 48 - 6 oz jars | 22 |
5 | Chef Anton's Gumbo Mix | 2 | 2 | 36 boxes | 21.35 |
SupplierID | SupplierName | ContactName | Address | City | PostalCode | Country |
---|---|---|---|---|---|---|
1 | Exotic Liquid | Charlotte Cooper | 49 Gilbert St. | London | EC1 4SD | UK |
2 | New Orleans Cajun Delights | Shelley Burke | P.O. Box 78934 | New Orleans | 70117 | USA |
3 | Grandma Kelly's Homestead | Regina Murphy | 707 Oxford Rd. | Ann Arbor | 48104 | USA |
4 | Tokyo Traders | Yoshi Nagase | 9-8 Sekimai Musashino-shi | Tokyo | 100 | Japan |
이렇게 두 테이블이 있으면
SELECT ProductName FROM Products WHERE SupplierId = Suppliers.supplierId AND Price < 20
이 SELECT 구문을 이용하여 EXIST절을 써봅시다.
저 하위 쿼리는 Products 테이블 에서 가격이 20 미만(Price<20)인 공급자 테이블 내 SupplierId를 통해
이게 만약에 TRUE이면
SELECT SupplierName
FROM Suppliers
WHERE EXISTS (SELECT ProductName FROM Products WHERE SupplierId = Suppliers.supplierId AND Price < 20);
공급자 테이블에서 공급업체 이름을 나열하겠죠 ??? 위 테이블대로라면
현재 하위 쿼리가 참인 형태이고 이에 따라서 공급업체 이름을 나열합니다.
SupplierName |
---|
Exotic Liquid |
이런 식으로 나열이 될겁니다.
만약 가격이 22인 공급업체를 나열 하려면
SELECT SupplierName
FROM Suppliers
WHERE EXISTS (SELECT ProductName FROM Products WHERE SupplierId = Suppliers.supplierId AND Price = 22);
이렇게 되겠죠. 즉 생산 테이블 내에서 공급자의 Id와 가격이 22인 것이 존재하면 그 22인 공급업체의 이름을 나열 합니다.
결과는
SupplierName
New Orleans Cajun Delights
이렇게 나오겠죠.??
'데이터베이스 > MySQL' 카테고리의 다른 글
MySQL 테이블 복사 (0) | 2018.12.24 |
---|---|
MySQL ANY/ALL (1) | 2018.12.24 |
MySQL GROUP BY/HAVING (0) | 2018.12.23 |
MySQL 자체 조인(self join) (1) | 2018.12.22 |
MySQL 전체 외부 조인(FULL OUTER JOIN) (0) | 2018.12.22 |