[MYSQL 변수 선언 및 사용]
회원가입으로 받아온 회원데이터중 생년월일이 있습니다.
이 생년월일(6자리)로 회원의 나이를 검색하려고 합니다. (만나이는 생각하지 않겠습니다)
먼저 쿼리문 투척합니다
1 SELECT *
2 ,@year := YEAR(CURDATE())
3 ,substr(
4 if (
5 2000 > (@year - substr(mem_birth, 1, 2)),
6 (@year - substr(mem_birth, 1, 2) + 1),
7 @year - substr(mem_birth, 1, 2)
8 )
9 , 3, 4) as tmp_ssn
10 FROM member
11 HAVING tmp_ssn like '25'
member 테이블에 생년월일 컬럼(mem_birth)의 값으로 나이를 계산하여 검색하는 방법입니다.
2번 : mysql에서 @는 변수를 선언할때 사용하는데요 year라는 변수를 만들겁니다. 변수명 옆에 := 는 값을 대입하겠다는 '='과 같은 역할이에요~
CURDATE()를 사용하여 현재 날짜 (2016-XX-XX)를 가져와 year함수를 사용하여 년도만 가져옵니다.
3번 : substr()를 사용하여 원하는 문자열만 가져올거에요.
4번 : mysql안에서 if문을 사용하여 값을 가져올거에요. if("조건","참","거짓") 형식으로 진행됩니다.
5번 : 2000년 이후 출생한 사람들에 대한 계산식이에요. 현재년도에서 생년월일 앞두자리 가져와 빼줍니다. 예를 들어 현재 920101(현재25살), 010101(현재15살) 2명의 경우
ex) 2016 - 92 = 1924 , 2016 - 01 = 2015
6번 : 만약 5번의 값이 2000이하라면 1924의 값에 1을 더해줍니다. 그럼 25살로 맞게 나오죠?
7번 : 2000보다 큰경우에는 그 값을 그대로 출력합니다.
9번 : 가상 컬럼 별칭은 tmp_ssn입니다. tmp_ssn의 값중 뒤에 2자리를 출력합니다.
11번 : tmp_ssn은 원래 없던 컬럼이기 때문에 WHERE로 검색을 할수없습니다. 그럴땐 HAVING을 사용하여 검색합니다~!!
'php개발자(백엔드) > DB_mysql' 카테고리의 다른 글
서브쿼리 concat() 검색 (0) | 2018.03.05 |
---|---|
mysql order by와 limit 활용 (0) | 2017.03.10 |
카페24 DB 연결 (0) | 2017.01.20 |
MYSQL WHERE절 사용 (0) | 2016.09.05 |
기본 쿼리문 (select, update, delete) 구조 및 사용 (0) | 2016.08.19 |