본문 바로가기

데이터베이스8

PostgreSQL 배열 함수 array_agg, array_to_string, unnest, array_append 먼저 가상 테이블을 생성하겠습니다. with make_array as ( select unnest(array['고기', '고기', '고기', '채소', '채소']) as col1 , unnest(array['삼겹살', '항정살', '가브리살', '상추', '명이나물']) as col2 ) select col1 ,col2 from make_array; unnest -> 인수로 입력받은 array를 행집합으로 반환 이런 결과가 나온다. col1 col2 고기 삼겹살 고기 항정살 고기 가브리살 채소 상추 채소 명이나물 with make_array as ( select unnest(array['고기', '고기', '고기', '채소', '채소']) as col1 , unnest(array['삼겹살', '항정살',.. 2022. 11. 4.
Postgresql With Recursive, UNION ALL 사용한 계층형 쿼리 Postgresql은 WITH RECURSIVE 구문으로 재귀쿼리로 사용가능하며 계층형 쿼리로 만들때 많이 사용한다. with recursive recursive_name [(column1,...)] as ( -- initial query (처음 호출하는 쿼리) SELECT [(column1, ...)] UNION [ALL] -- recursive query (재귀 쿼리) 반복되는 부분 SELECT [(column1, ...)] FROM recursive_name [WHERE] ) -- parent query SELECT * FROM recursive_name 이건 내 개인 프로젝트에서 사용하는 답글 기능을 추가한 댓글 리스트를 보여주는 쿼리다. WITH RECURSIVE cte AS ( SELECT a.. 2022. 9. 22.
PostgreSQL merge문 PostgreSQL은 mysql랑 다르게 UPLICATE KEY UPDATE 가없기 때문에 with문으로 직접 구현해야 한다. with upsert as ( update tb_user set reg_userno = #{user_no} ,upd_date = to_char(now(),'YYYYMMDDHH24MISS') where id = #{id} and reg_userno = #{reg_userno} returning * ) INSERT into tb_user ( id ,reg_userno ,reg_date ) select #{id} ,#{reg_userno} ,to_char(now(),'YYYYMMDDHH24MISS') where not exists(select * from upsert); -- with.. 2022. 9. 19.
[MySQL] group_concat 사용하기 (멀티행을 싱글행으로) select * from table; 실행 결과 이 실행 결과에서 name을 한줄로 결과값을 받고 싶으면 group_concat 사용하면 편하다 country name korea 김 korea 이 korea 박 select country, group_concat(name) from table group by country; 실행 결과 group_concat을 기본적인 형태는 문자열 사이에 쉼표(,)가 붙게 된다. country name korea 김,이,박 구분자를 변경하고 싶을때는 아래와 같이 SEPARATOR '구분자' 를 붙여 준다. select country, group_concat(name separator '|') from table group by country; 실행 결과 country n.. 2022. 3. 15.