본문 바로가기

전체 글218

MySQL INSERT INTO SELECT INSERT INTO (table_A) SELECT (columns) FROM (table_B) WHERE (Conditions) 기존에 있던 테이블의 데이터를 다른 테이블로 copy한다. 두 테이블간의 Data Type은 일치해야 한다. INSERT INTO Facilities2 (addr1, areaCode, tel, title) SELECT addr1, areaCode, tel, title FROM Facilities WHERE areaCode = 1; Facilities에서 areaCode가 1인 데이터를 Facilities2로 INSERT 하고있다. 2023. 1. 16.
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.