[SQL] 조건에 맞는 사용자 정보 조회하기
Programmers / MySQL / Lv.3
SELECT U.USER_ID AS USER_ID,
U.NICKNAME AS NICKNAME,
CONCAT_WS(' ', U.CITY, U.STREET_ADDRESS1, U.STREET_ADDRESS2) AS '전체주소',
CONCAT_WS('-', SUBSTRING(U.TLNO FROM 1 FOR 3),
SUBSTRING(U.TLNO FROM 4 FOR 4),
SUBSTRING(U.TLNO FROM 8)) AS '전화번호'
FROM USED_GOODS_USER AS U
INNER JOIN USED_GOODS_BOARD AS B
ON U.USER_ID = B.WRITER_ID
GROUP BY B.WRITER_ID
HAVING COUNT(B.WRITER_ID) >= 3
ORDER BY U.USER_ID DESC;
1. CONCAT_WS( 중간에 넣을 문장, 문장1, 문장2, 문장3, ... )
: 중간에 넣을 문장에 " !!! " 이렇게 느낌표 3개를 넣으면,
: 문장1 !!! 문장2 !!! 문장3 이렇게 출력된다.
2. SUBSTRING( 컬럼명, 시작 위치 FROM 개수 )
: 시작 위치가 '0' 부터가 아닌 '1'부터 시작한다.
: SUBSTR( 컬럼명, 시작위치, 개수 ) 라는 더 간결한 방법이 있지만... 그때 그때마다 다르게 사용하게 되는것 같다
[해석]
SELECT U.USER_ID AS USER_ID,
U.NICKNAME AS NICKNAME,
CONCAT_WS(' ', U.CITY, U.STREET_ADDRESS1, U.STREET_ADDRESS2) AS '전체주소',
CONCAT_WS('-', SUBSTRING(U.TLNO FROM 1 FOR 3),
SUBSTRING(U.TLNO FROM 4 FOR 4),
SUBSTRING(U.TLNO FROM 8)) AS '전화번호'
: 전화번호 사이에 '-' 하이픈을 넣기 위함
FROM USED_GOODS_USER AS U
INNER JOIN USED_GOODS_BOARD AS B
ON U.USER_ID = B.WRITER_ID
GROUP BY B.WRITER_ID
: 판매를 한 사용자들의 그룹이기 때문에 WRITER_ID로 묶어 주었다.
HAVING COUNT(B.WRITER_ID) >= 3
ORDER BY U.USER_ID DESC;
출처 : https://school.programmers.co.kr/learn/courses/30/lessons/164670