본문 바로가기

DB & SQL26

MySQL ANY(SOME) / ALL ANY Subquery의 결과에 따라 Boolean을 반환한다. 결과물이 1개라도 있을시 TRUE를, 없을시 FALSE를 반환하며 Mainquery는 Subquery의 결과물이 TRUE일 시에 Subquery의 결과물을 기반으로 레코드를 반환한다. SELECT facilities.title, facilities.tel, area.areaName, facilities.areaCode FROM facilities INNER JOIN area ON facilities.areaCode = area.areaCode WHERE facilities.areaCode = ANY (SELECT areaCode FROM Facilities WHERE contentTypeId = 14); 1) facilities와 area를.. 2023. 1. 16.
MySQL EXISTS / NOT EXISTS EXISTS연산자는 서브쿼리를 통해 데이터 존재 유/무를 파악하여 실행된다. SELECT SupplierName FROM Suppliers WHERE EXISTS (SELECT ProductName FROM Products WHERE Suppliers.SupplierID = Products.SupplierID AND Price > 10) - Suppliers에 저장된 각 행을 Subquery와 비교 후 조건에 일치한다면 레코드 반환, 일치하지 않는다면 다음 행으로 넘어간다. 앞에 NOT을 붙여 사용하면 EXISTS와 반대가 된다. SELECT SupplierName FROM Suppliers WHERE NOT EXISTS (SELECT ProductName FROM Products WHERE Suppli.. 2023. 1. 12.
My SQL 변수선언(ROWNUM) MySQL에서는 Oracle과는 다르게 ROWNUM()을 사용할 수 없다. 하여 ROWNUM을 변수로서 선언하여 사용해야 한다. 변수선언 SET명령어와 함께 단어 앞에 @를 붙이면 변수로서 사용하겠다는 의미가 된다. SET @ROWNUM = value or SET @ROWNUM := value SET외의 명령문에서 '='는 대입연산자로 취급된다. 하여 = 앞에 :를 붙여주면 된다. SELECT @ROWNUM := @ROWNUM + 1 FROM (SELECT @ROWNUM := 0)R SELECT @ROWNUM := @ROWNUM + '1' FROM (SELECT @ROWNUM := 0)R -- 문자열로 연산을 시도해도 정상 실행된다. SELECT @ROWNUM := @ROWNUM++ FROM (SELEC.. 2023. 1. 11.
MySQL HAVING HAVING절은 WHERE절과 동일하게 조건을 수행할 때 사용한다. WHERE절이 있는데 왜 HAVING절을 사용하는지에 대한 이유는 통계레코드에 대해선 WHERE절을 통해 조건을 명시할 수 없기 때문이다. W3Schools에서 제공하는 Demo Database를 통해 예시를 알아보자. ● Customers - 고객명단 테이블 - CustomerID == PK ● Orders - 주문내역 테이블 - OrderID, CustomerID == PK ● Products - 상품 테이블 - ProductID, CategoryID == PK ● Categories - 카테고리 테이블 - CategoryID == PK ● OrderDetails - OrderDetailID, OrderID, ProductID == .. 2023. 1. 11.