• MySQL매뉴얼
    • MySQL 5.6 매뉴얼
    • MySQL 5.1 매뉴얼
    • MySQL 5.0 매뉴얼
    • MySQL HA 매뉴얼
  • 기술문서
    • Xtrabackup 구성
    • 메모리 사용량 모니터링
  • 라이선스
  • 온라인문의
  • 회사소개
  • → 목 록 (MySQL5.6 한글메뉴얼) [close]
  • 1. MySQL 5.6 새로운 기능
  • 2. MySQL 설치 및 업그레이드
  • 3. MySQL Tutorial
  • 1. 서버에 연결 그리고 서버와 연결 끊기
    2. 쿼리 입력
    3. 데이터베이스 생성 및 사용
    4. 데이터베이스 및 테이블 정보 가져 오기
    5. 배치 모드에서의 MySQL의 사용
    6. 일반적인 쿼리의 예제
    1. 컬럼의 최대 값
    2. 특정 컬럼의 최대 값이 저장되는 행
    3. 그룹별 컬럼의 최대 값
    4. 특정 컬럼 그룹별 최대 값이 저장되는 행
    5. 사용자 정의 변수 사용
    6. 외부 키의 사용
    7. 두 개의 키를 사용하여 검색
    8. 일일 방​​문자수 계산
    9. AUTO_INCREMENT 사용
    7. Apache와 MySQL 사용
  • 4. MySQL 프로그램
  • 5. MySQL 서버관리
  • 6. 보안
  • 7. 백업 및 복구
  • 8. 최적화
  • 9. Language Structure(언어구조)
  • 10. Character Sets(Globalization)
  • 11. 데이터형(Data Types)
  • 12. 함수와 연산자
  • 13. SQL 문법
  • 14. InnoDB 스토리지 엔진
  • 15. 기타 스토리지 엔진
  • 16. 고가용성 및 확장성
  • 17. 리플리케이션
  • 18. MySQL Cluster
  • 19. 파티셔닝
  • 20. Stored Programs and Views
  • 21. INFORMATION_SCHEMA
  • 22. PERFORMANCE SCHEMA
  • 23. 컨넥터 및 API
  • 24. MySQL 확장
  • 25. MySQL Enterprise Edition
  • 26. MySQL Workbench
  • 27. 제약 및 제한
  • 28. MySQL 5.7 새로운 기능

3.6.4 특정 컬럼 그룹별 최대 값이 저장되는 행

작업 : 물품마다 최고치를 매기고있는업자 (복수 가능)를 확인합니다.

이 문제는 다음과 같은 서브 쿼리를 사용하여 해결할 수 있습니다.

 SELECT article, dealer, price
FROM   shop s1
WHERE  price=(SELECT MAX(s2.price)
              FROM shop s2
              WHERE s1.article = s2.article);

+---------+--------+-------+
| article | dealer | price |
+---------+--------+-------+
|    0001 | B      |  3.99 |
|    0002 | A      | 10.99 |
|    0003 | C      |  1.69 |
|    0004 | D      | 19.95 |
+---------+--------+-------+

이 예에서는 상관 서브 쿼리를 사용하고 있습니다 만, 이것은 충분하지 않은 경우가 있습니다 ( 섹션 13.2.10.7 "상관 서브 쿼리" 를 참조하십시오). 이 문제를 해결하는 또 다른 방법은 FROM 절 또는 LEFT JOIN 에서 비 상관 서브 쿼리를 사용하는 것입니다.

비 상관 서브 쿼리

 SELECT s1.article, dealer, s1.price
 FROM shop s1
 JOIN (
   SELECT article, MAX (price) AS price
   FROM shop
   GROUP BY article) AS s2
   ON s1.article = s2.article AND s1.price = s2.price;

LEFT JOIN :

 SELECT s1.article, s1.dealer, s1.price
 FROM shop s1
 LEFT JOIN shop s2 ON s1.article = s2.article AND s1.price <s2.price
 WHERE s2.article IS NULL;

LEFT JOIN 의 동작은 s1.price 이 최대 값을 취할 때, 그것보다 큰 값의 s2.price 는 존재하지 않고, s2 행의 값은 NULL 이되는 것에 따라 있습니다. 섹션 13.2.9.2 "JOIN" 을 참조하십시오.

서울시 강남구 영동대로 602 6층
TEL: 02-6061-0006  /  E: csr@mysqlkorea.com
주식회사 이노클러스터  등록번호 : 727-86-02261
Copyright © innocluster Co. ltd. all rights reserved