본문 바로가기

우당탕탕 개발생활/_Database4

[MySQL] EXCEPT 기능 구현하기 MySQL Version : 5.7 기존 MsSQL 프로젝트을 MySQL로 Porting 작업을 진행하게 된다면 EXCEPT를 언젠가 마주치게 된다. EXCEPT는 차집합의 개념으로 만약 TableA가 있다면 TableA의 Row 중 TableB의 Row와 같지 않거나 TableA 에는 있는데 TableB에는 없는 데이터를 리턴하는 기능을 한다. MySQL 에서는 EXCEPT를 지원하지 않기에 똑같이 기능을 하도록 작성할 수 있다. MsSQL 용 : SELECT USER_ID FROM TABLEA WHERE USER_ID = #{UserId} EXCEPT SELECT USER_ID FROM TABLEB WHERE USER_ID = #{UserId} MySQL 용 : SELECT DISTINCT USER_.. 2022. 1. 19.
[MySQL] MsSQL의 FULL OUTER JOIN 사용하기 MySQL Version: 5.7 MySQL 에서는 FULL OUTER JOIN을 사용할 수 없다. 하지만 FULL OUTER JOIN 과 동일한 기능을 할 수 있다. MySQL에서 FULL OUTER JOIN 이 필요한 경우가 있다면 LEFT OUTER JOIN, RIGHT OUTER JOIN 그리고 UNION 을 사용한다. MsSQL 쿼리 : SELECT * FROM TB1 TB1 FULL OUTER JOIN SELECT * FROM TB2 TB2 ON TB1.CD = TB2.CD MySQL 쿼리 : SELECT * FROM TB1 TB1 LEFT OUTER JOIN SELECT * FROM TB2 TB2 ON TB1.CD = TB2.CD UNION SELECT * FROM TB1 TB1 RIGHT .. 2022. 1. 18.
[MySQL] Access is denied 오류 해결 방법 Statement cancelled due to timeout or client request Access is denied 아침에 출근 하고 보니 어제까지 잘 작동하던 톰캣 서버에서 로그인이 안되는 현상이 발생했다. 톰캣 로그를 확인 로그인 전의 기본적 SELECT문들은 정상적으로 조회되고 있었다. 같은 MySQL 서버를 사용하는 동료분께서 어제 테스트하면서 MySQL 서버 설정을 바꾸는 쿼리를 실행시켰다는 말을 듣고 예상할 수 있었다. 해결하기 위해서는 우선 아래 쿼리를 실행시킨다. show [FULL] processlist 위 쿼리를 MySQL 에서 조회해보면 현재 실행중인 스레드들이 보인다. *[FULL] 키워드는 없어도 된다. 없으면 문장의 100자까지만 표시 된다. 위의 결과 테이블이 오류가 .. 2022. 1. 6.
[MySQL] Error Code: 1093. 해결방법 _DELETE문 Mysql version : 5.7 Error Code: 1093. You can't specify target table '***' for update in FROM clause 현재 프로젝트에서 MsSQL 에서 MySQL로 포팅작업을 한참 하고 있는데 MySQL로 쿼리문을 만들던 도중 1093 오류가 발생했다. 이 오류는 DELETE 문 수행중에 발생했고, INSERT, UPDATE 문에서도 발생한다고 한다. DELETE를 하려는 테이블의 값을 서브 쿼리에 대입하다 보니 발생하는 것 같다. 다음은 오류가 발생되던 쿼리이다. DELETE A FROM DATA_PERMISSION A WHERE USER_ID = '' AND TYPE_CD = '22' AND NOT EXISTS ( SELECT 1 FROM.. 2021. 12. 21.