Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL 테이블에서 최대 금액을 가진 모든 제품을 상세 정보와 함께 조회하는 방법

MySQL에서 테이블에 저장된 값 중 가장 큰 금액(maximum amount)을 가진 모든 제품을 조회하려면 MAX() 함수와 서브쿼리(subquery)를 함께 사용하면 됩니다. 이때 MAX()는 해당 컬럼의 최댓값을 구하는 역할을 합니다.

1. 테이블 생성하기

먼저 예제에 사용할 테이블을 생성합니다.

mysql> create table DemoTable
(
    ProductId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    ProductName varchar(100),
    ProductAmount int
);
Query OK, 0 rows affected (0.53 sec)

2. 샘플 데이터 삽입하기

INSERT 명령을 사용해 테이블에 몇 개의 레코드를 추가합니다.

mysql> insert into DemoTable(ProductName,ProductAmount) values('Product-1',60);
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable(ProductName,ProductAmount) values('Product-2',40);
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable(ProductName,ProductAmount) values('Product-3',75);
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable(ProductName,ProductAmount) values('Product-4',50);
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable(ProductName,ProductAmount) values('Product-5',75);
Query OK, 1 row affected (0.12 sec)

3. 전체 데이터 확인하기

SELECT 문으로 테이블의 모든 레코드를 조회해 보겠습니다.

mysql> select *from DemoTable;

위 쿼리는 다음과 같은 결과를 출력합니다.

+-----------+-------------+---------------+
| ProductId | ProductName | ProductAmount |
+-----------+-------------+---------------+
|         1 | Product-1   |            60 |
|         2 | Product-2   |            40 |
|         3 | Product-3   |            75 |
|         4 | Product-4   |            50 |
|         5 | Product-5   |            75 |
+-----------+-------------+---------------+
5 rows in set (0.00 sec)

4. 최대 금액을 가진 제품 조회하기

최대 금액을 가진 모든 제품을 표시하는 쿼리는 다음과 같습니다. WHERE 절 안의 서브쿼리가 먼저 실행되어 테이블 전체의 최대 금액(75)을 구하고, 그 값과 일치하는 행만 반환됩니다.

mysql> select *from DemoTable where ProductAmount=(select max(ProductAmount) from DemoTable);

실행 결과는 아래와 같습니다.

+-----------+-------------+---------------+
| ProductId | ProductName | ProductAmount |
+-----------+-------------+---------------+
|         3 | Product-3   |            75 |
|         5 | Product-5   |            75 |
+-----------+-------------+---------------+
2 rows in set (0.00 sec)

결과를 보면 최대 금액인 75를 가진 Product-3Product-5 두 개의 제품이 모두 조회된 것을 확인할 수 있습니다. 이처럼 서브쿼리 방식을 사용하면 최댓값이 여러 행에 존재하더라도 해당하는 모든 제품을 한 번에 가져올 수 있다는 장점이 있습니다.