반응형
SELECT 
        T.idx, T.path, T.hash_idx
      , (SELECT MAX(modify_time) FROM proc WHERE hash_idx = T.hash_idx) as hash_lmt
      , (SELECT MAX(modify_time) FROM proc WHERE hash_idx = T.hash_idx AND `path` = T.path) AS modify_time
 FROM (
      SELECT * FROM proc
   ) AS T
GROUP BY T.hash_idx, T.path 
ORDER BY hash_lmt DESC, modify_time DESC;

경로와 해쉬 기준으로 group by 할 경우 단순 조회시 시간 정보가 누락되어 조회가 되었습니다.

그래서 서브쿼리를 이용해서 해당 경로의 최신 시간 정보를 가져오도록 서브 쿼리를 작성하였습니다.

SELECT 
        T.idx, T.group_code, T.path, T.hash_idx
      , (SELECT MAX(modify_time) FROM proc WHERE hash_idx = T.hash_idx) as hash_lmt
      , (SELECT MAX(modify_time) FROM proc WHERE hash_idx = T.hash_idx AND `path` = T.path AND `group_code` = T.group_code) AS modify_time
 FROM (
      SELECT * FROM proc
   ) AS T
GROUP BY T.hash_idx, T.path, T.group_code
ORDER BY hash_lmt DESC, T.group_code desc, modify_time DESC;

해시, 경로, 그룹 기준으로 group by 할 경우도 동일하게 조건을 하나 더 추가해서 누락된 시간정보를 조회하도록 하였습니다.

728x90
반응형

Spring Data JPA를 Data insert 시킬경우 한글 데이터가 등록 되지 않고 에러가 발생한다. 

이를 해결해주기 위해서는 DB자체에 기본 charater set 설정을 해줘야합니다. 

Windows의 MariaDB를 설치하여 사용하는데 다음과 같이 설정하여 이를 해결해 주었습니다.

경로 : C:\Program Files\MariaDB 10.5\data\my.ini

[mysql]
default-character-set = utf8

[mysqld]
datadir=C:/Program Files/MariaDB 10.5/data
port=3306
innodb_buffer_pool_size=2041M
character-set-server = utf8
collation-server = utf8_general_ci
init_connect='SET NAMES utf8'

[client]
port=3306
plugin-dir=C:/Program Files/MariaDB 10.5/lib/plugin
default-character-set = utf8

728x90
반응형

mysql에서 update 쿼리를 날렸을 때 다음과 같은 에러가 나는 경우가 있다. 

Caused by: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Truncated incorrect DOUBLE value: '-Infinity'

워니는 조건문에 필드 데이터가 비교할 수 없는 데이터가 존재해서 그런는 듯하다. 

나같은 경우는 IFNULL을 이용해서 해결하였다. 

ex) 

update [테이블명] set abc='abc' where field > 10  //이전

update [테이블명] set abc='abc' where IFNULL(field, 0) > 10 //이후



혹은 다른 사이트에서는 

update [테이블명] set abc='abc' and cde = 'cde' where field > 10 //이전

update [테이블명] set abc='abc' , cde = 'cde' where field > 10  //이후



and를 ,로 바꿔주라고 말하는 경우가 있는데 

나의 경우는 이미 , 였는데 해결이 되지 않아 ifnull 함수를 이용해서 해결하였다.

728x90

+ Recent posts