MySql - v4.1 이하버전 서브쿼리 미지원 대체방식 group by 사용
Posted 01 5, 2010 13:36, Filed under: DataBase/Mysql
# 한번의 광고 클릭으로, 당신을 대신해서 불우이웃을 도울 기회가 많아집니다.
# MySql 4.1 버전 이상에서는 서브쿼리가 지원이 되어서 오라클에서처럼 서브쿼리를 사용하여
편하게 그룹의 값을 확인할수 있었는데요.
MySql 4.0대와 이전 버전에서는 서브쿼리가 지원이 되지 않는 문제가 있었습니다.
저의 경우는 로컬에서 MySql 5.0대로 개발을 한후 호스팅 업체의 리얼 서버에 적용을 하니,
MySql 버전에서 서브쿼리가 지원이 되지 않는 문제가 발생했었습니다.
에러 메세지:
ERROR 1064: You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near
# 변경전 쿼리(Sub Query사용) :
SELECT a.MEMO_SEQ, a.MEMO_TYPE, a.CONTENTS, a.REG_YEAR, a.REG_MONTH_DAY, a.REG_TIME, a.USER_ID, a.IS_SHOW,
(SELECT COUNT(REG_MONTH_DAY)AS CNT
FROM TIME_MEMO
WHERE REG_MONTH_DAY = a.REG_MONTH_DAY
)AS CNT
FROM TIME_MEMO a
WHERE a.IS_SHOW = 1
AND a.USER_ID = 'sunshiny'
ORDER BY a.MEMO_SEQ DESC;
# 변경후 쿼리(Group By사용) :
SELECT a.MEMO_SEQ, a.MEMO_TYPE, a.CONTENTS, a.REG_YEAR, a.REG_MONTH_DAY, a.REG_TIME, a.USER_ID, a.IS_SHOW, COUNT(b.REG_MONTH_DAY)AS CNT
FROM TIME_MEMO a, TIME_MEMO b
WHERE a.IS_SHOW = 1
AND a.USER_ID = 'sunshiny'
AND a.REG_YEAR = b.REG_YEAR
AND a.REG_MONTH_DAY = b.REG_MONTH_DAY
GROUP BY a.MEMO_SEQ, a.MEMO_TYPE, a.CONTENTS, a.REG_YEAR, a.REG_MONTH_DAY, a.REG_TIME, a.USER_ID, a.IS_SHOW
ORDER BY a.MEMO_SEQ DESC
# 중복 값 찾기 :
SELECT AAA, BBB, CCC
FROM ABC
GROUP BY AAA, BBB, CCC
HAVING COUNT(*) > 1;
"DataBase / Mysql" 분류의 다른 글
| Mysql - TEXT Length (0) | 2011/01/13 |
| Mysql - auto_increment 값 초기화 (0) | 2010/08/20 |
| Mysql - 에러 Got error: 1045 Access denied (0) | 2010/02/18 |
| Mysql - mysql 설치후 Character set 변경 (5) | 2010/01/28 |
| Mysql - Connector/J Versions 버전 확인 (0) | 2010/01/28 |
| Mysql - InnoDB 사용 가능 상태 확인및 설정 (0) | 2010/01/27 |
| Mysql - 실수로 삭제한 mysql DB 복구방법 (0) | 2010/01/20 |
| Mysql - 계정 생성및 외부 접속 아이피 등록 설정 (0) | 2010/01/19 |
| Mysql - DB 백업 및 복구 (0) | 2009/08/03 |
| Linux - Mysql 설치 (0) | 2009/01/14 |
# 한번의 광고 클릭으로, 당신을 대신해서 불우이웃을 도울 기회가 많아집니다.
Response :
0 Trackback
,
0 Comment
Trackback URL : http://develop.sunshiny.co.kr/trackback/364