MySQL 테이블에서 첫 번째 행 선택
- MySQL 테이블에서 첫 번째 행 선택
-
LIMIT
절을 사용하여 열에 여러 인스턴스가 있는 MySQL 테이블에서 첫 번째 행 검색 -
IN()
,MIN()
및GROUP BY
를 사용하여 MySQL 테이블에서 각 그룹의 첫 번째 행 가져오기 -
LIMIT
및ORDER BY
를 사용하여 전체 MySQL 테이블에서 첫 번째 행 선택
오늘은 MySQL 테이블에서 첫 번째 행을 선택하려는 세 가지 시나리오와 솔루션을 살펴보겠습니다.
첫 번째 시나리오에서는 특정 열에 여러 인스턴스가 있는 MySQL 테이블에서 첫 번째 행을 가져오는 방법을 배웁니다. 예를 들어 manager
테이블에서 first_name
이 Mehvish
인 첫 번째 행을 선택합니다.
두 번째 시나리오에서는 테이블의 각 그룹에서 첫 번째 행을 선택합니다. 여기에서는 그룹과 관련하여 데이터를 검색하는 방법도 살펴봅니다. 세 번째 시나리오에서는 전체 MySQL 테이블에서 첫 번째 행을 가져오는 방법을 살펴보겠습니다.
MySQL 테이블에서 첫 번째 행 선택
코드 예제로 들어가기 전에 manager_id
가 기본 키인 manager_id
, first_name
및 last_name
을 필드로 사용하여 manager_id
테이블을 생성해 보겠습니다.
이 테이블을 만들고 채우는 쿼리는 다음과 같습니다. 이것들을 사용할 수도 있습니다.
예제 코드:
CREATE TABLE manager (
manager_id INT NOT NULL AUTO_INCREMENT,
first_name VARCHAR(150) NOT NULL,
last_name VARCHAR(150) NOT NULL,
PRIMARY KEY(manager_id)
);
INSERT INTO manager (first_name, last_name)
VALUES
('Mehvish', 'Ashiq'),
('Saira', 'Mushtaq'),
('Thomas', 'Christopher'),
('Thomas', 'Gabrial'),
('Tahir', 'Raza'),
('Saira', 'Johny'),
('Saira', 'Daniel');
SELECT * FROM manager;
출력:
+------------+------------+-------------+
| manager_id | first_name | last_name |
+------------+------------+-------------+
| 1 | Mehvish | Ashiq |
| 2 | Saira | Mushtaq |
| 3 | Thomas | Christopher |
| 4 | Thomas | Gabrial |
| 5 | Tahir | Raza |
| 6 | Saira | Johny |
| 7 | Saira | Daniel |
+------------+------------+-------------+
7 rows in set (0.00 sec)
LIMIT
절을 사용하여 열에 여러 인스턴스가 있는 MySQL 테이블에서 첫 번째 행 검색
manager
테이블의 first_name
열에는 Mehvish
인스턴스 하나, Tahir
인스턴스 하나, Thomas
인스턴스 두 개, Sair
인스턴스 세 개가 있습니다. SELECT
문을 사용하여 현재 테이블 데이터를 볼 수 있습니다.
다음 문을 실행하여 manager
테이블에서 first_name
이 Saira
인 첫 번째 행을 가져옵니다.
질문:
SELECT * FROM manager WHERE first_name = 'Saira' LIMIT 1;
출력:
+------------+------------+-----------+
| manager_id | first_name | last_name |
+------------+------------+-----------+
| 2 | Saira | Mushtaq |
+------------+------------+-----------+
1 row in set (0.00 sec)
first_name
이 Sair
인 세 번째 레코드를 가져오고 싶다고 가정합니다. 두 개의 인수와 함께 LIMIT
절을 사용합니다(이 자습서의 뒷부분에서 설명).
질문:
SELECT * FROM manager WHERE first_name = 'Saira' LIMIT 2,1;
출력:
+------------+------------+-----------+
| manager_id | first_name | last_name |
+------------+------------+-----------+
| 7 | Saira | Daniel |
+------------+------------+-----------+
1 row in set (0.00 sec)
first_name
이 Saira
인 처음 두 개의 레코드를 가져오고 싶다고 가정합니다. 다음과 같이 할 수 있습니다.
질문:
SELECT * FROM manager WHERE first_name = 'Saira' LIMIT 2;
출력:
+------------+------------+-----------+
| manager_id | first_name | last_name |
+------------+------------+-----------+
| 2 | Saira | Mushtaq |
| 6 | Saira | Johny |
+------------+------------+-----------+
2 rows in set (0.00 sec)
또한 first_name
이름이 Saira
인 마지막 두 레코드를 가져올 수 있습니다. LIMIT
절과 함께 ORDER BY
절을 사용합니다.
질문:
SELECT * FROM manager WHERE first_name = 'Saira' ORDER BY manager_id DESC LIMIT 2;
출력:
+------------+------------+-----------+
| manager_id | first_name | last_name |
+------------+------------+-----------+
| 7 | Saira | Daniel |
| 6 | Saira | Johny |
+------------+------------+-----------+
2 rows in set (0.00 sec)
여기에서 LIMIT
및 ORDER BY
절의 역할을 이해하는 것이 중요합니다. LIMIT
절은 SELECT
문과 함께 사용되어 테이블에서 특정 수의 레코드를 가져옵니다.
LIMIT
절은 양의 정수 또는 0이어야 하는 하나 또는 두 개의 인수를 사용합니다. 다음은 하나와 두 개의 인수가 있는 LIMIT
절의 구문입니다.
통사론:
# Syntax with one argument
SELECT
your_select_list
FROM
you_table_name
WHERE
your_condition
LIMIT row_count;
# Syntax with two arguments
SELECT
your_select_list
FROM
your_table_name
WHERE
your_condition
LIMIT [offset,] row_count;
row_count
는 반환할 레코드의 최대 수를 나타내며 offset
은 예를 들어 offset
2에서 row_count
4까지 특정 범위의 레코드를 검색하려는 경우에 사용됩니다. 첫 번째 행의 오프셋`은 1이 아니라 0입니다.
다음 그림을 참조하십시오.
LIMIT row_count
와 LIMIT 0, row_count
는 서로 동일합니다. 프로젝트 요구 사항에 따라 ORDER BY
절은 테이블 데이터를 내림차순 또는 오름차순으로 정렬합니다.
IN()
, MIN()
및 GROUP BY
를 사용하여 MySQL 테이블에서 각 그룹의 첫 번째 행 가져오기
이 두 번째 시나리오는 IN()
및 MIN()
함수와 GROUP BY
절을 사용하여 테이블에서 각 그룹의 첫 번째 행을 선택하고 가져옵니다.
예제 코드:
SELECT * FROM manager
WHERE
manager_id IN (
SELECT min(manager_id)
FROM manager
GROUP BY first_name
);
출력:
+------------+------------+-------------+
| manager_id | first_name | last_name |
+------------+------------+-------------+
| 1 | Mehvish | Ashiq |
| 2 | Saira | Mushtaq |
| 3 | Thomas | Christopher |
| 5 | Tahir | Raza |
+------------+------------+-------------+
4 rows in set (0.08 sec)
이 예제에서는 다양한 함수와 절을 사용하여 원하는 결과를 얻습니다.
IN()
- 이 함수를 사용하면WHERE
절에 여러 값을 지정할 수 있습니다. 표현식이IN()
목록 값과 같으면1
을 반환합니다.GROUP BY
- 주로 집계 함수(예:MIN()
,MAX()
,COUNT()
등)와 함께 사용되는 동일한 값을 포함하는 레코드를 그룹화합니다.MIN()
- 쿼리에서 속성(컬럼)의 가장 낮은 값을 반환합니다.- 하위 쿼리 - 예를 들어
SELECT
,UPDATE
,DELETE
등과 같이 다른 쿼리 안에 중첩됩니다. 하위 쿼리를 다른 하위 쿼리에도 중첩할 수 있습니다. 조항).
LIMIT
및 ORDER BY
를 사용하여 전체 MySQL 테이블에서 첫 번째 행 선택
LIMIT
절을 사용하여 순서와 조건에 관계없이 전체 테이블에서 첫 번째 행을 선택하십시오.
질문:
SELECT * from manager LIMIT 1;
출력:
+------------+------------+-----------+
| manager_id | first_name | last_name |
+------------+------------+-----------+
| 1 | Mehvish | Ashiq |
+------------+------------+-----------+
1 row in set (0.00 sec)
LIMIT
와 함께 ORDER BY
를 사용하여 정렬된 데이터에서 첫 번째 행을 가져옵니다(내림차순으로).
질문:
SELECT * from manager ORDER BY first_name DESC LIMIT 1;
출력:
+------------+------------+-------------+
| manager_id | first_name | last_name |
+------------+------------+-------------+
| 3 | Thomas | Christopher |
+------------+------------+-------------+
1 row in set (0.00 sec)