아래와 같이 유저 정보를 저장하는 user_info 테이블이 있다.
나는 유저 정보를 json으로 받고싶다!!
그렇다면 to_json 함수를 사용하면 된다.
SELECT user_id,
(SELECT to_json(ui_json)
FROM
(SELECT user_nm,
age,
email,
phone_num,
address,
to_char(reg_date, 'yyyy-MM-dd') AS reg_date
FROM user_info ui2
WHERE ui.user_id = ui2.user_id) ui_json) AS user_info_json
FROM user_info ui
결과
나는 이 유저 정보를 한 리스트에 몽땅 때려넣고 싶다!!
그렇다면 json_agg 함수를 사용하면 된다.
SELECT json_agg(to_json(ui_json))
FROM
(SELECT user_id
user_nm,
age,
email,
phone_num,
address,
to_char(reg_date, 'yyyy-MM-dd') AS reg_date
FROM user_info ui2) ui_json
결과
[{"user_id":"hong1","user_nm":"홍길동","age":"30","email":"hong1@test.com","phone_num":"010-1111-2222","address":"주소","reg_date":"2024-03-14"}, {"user_id":"lee","user_nm":"이민기","age":"34","email":"lee1@test.com","phone_num":"010-1111-2222","address":"주소","reg_date":"2024-03-14"}, {"user_id":"cho1","user_nm":"조나연","age":"27","email":"cho1@test.com","phone_num":"010-1111-2222","address":"주소","reg_date":"2024-03-14"}, {"user_id":"kim2","user_nm":"김자반","age":"45","email":"kim2@test.com","phone_num":"010-1111-2222","address":"주소","reg_date":"2024-03-14"}, {"user_id":"kim1","user_nm":"김유진","age":"25","email":"kim1@test.com","phone_num":"010-1111-2222","address":"주소","reg_date":"2024-03-14"}]
나는 유저 아이디를 key로 유저 정보 json을 value로 받고싶다!!
그렇다면 json_object_agg를 쓰면 된다!
SELECT json_object_agg(user_id, to_json(ui_json))
FROM
(SELECT user_id,
user_nm,
age,
email,
phone_num,
address,
to_char(reg_date, 'yyyy-MM-dd') AS reg_date
FROM user_info ui2) ui_json
결과
{ "hong1" : {"user_id":"hong1","user_nm":"홍길동","age":"30","email":"hong1@test.com","phone_num":"010-1111-2222","address":"주소","reg_date":"2024-03-14"},
"lee" : {"user_id":"lee","user_nm":"이민기","age":"34","email":"lee1@test.com","phone_num":"010-1111-2222","address":"주소","reg_date":"2024-03-14"},
"cho1" : {"user_id":"cho1","user_nm":"조나연","age":"27","email":"cho1@test.com","phone_num":"010-1111-2222","address":"주소","reg_date":"2024-03-14"},
"kim2" : {"user_id":"kim2","user_nm":"김자반","age":"45","email":"kim2@test.com","phone_num":"010-1111-2222","address":"주소","reg_date":"2024-03-14"},
"kim1" : {"user_id":"kim1","user_nm":"김유진","age":"25","email":"kim1@test.com","phone_num":"010-1111-2222","address":"주소","reg_date":"2024-03-14"} }
[PostgreSQL] PSQL 명령어 (0) | 2025.03.17 |
---|