MySQL 테이블에서 첫 번째 행 선택

Mehvish Ashiq 2023년6월20일
  1. MySQL 테이블에서 첫 번째 행 선택
  2. LIMIT절을 사용하여 열에 여러 인스턴스가 있는 MySQL 테이블에서 첫 번째 행 검색
  3. IN(), MIN()GROUP BY를 사용하여 MySQL 테이블에서 각 그룹의 첫 번째 행 가져오기
  4. LIMITORDER BY를 사용하여 전체 MySQL 테이블에서 첫 번째 행 선택
MySQL 테이블에서 첫 번째 행 선택

오늘은 MySQL 테이블에서 첫 번째 행을 선택하려는 세 가지 시나리오와 솔루션을 살펴보겠습니다.

첫 번째 시나리오에서는 특정 열에 여러 인스턴스가 있는 MySQL 테이블에서 첫 번째 행을 가져오는 방법을 배웁니다. 예를 들어 manager 테이블에서 first_nameMehvish인 첫 번째 행을 선택합니다.

두 번째 시나리오에서는 테이블의 각 그룹에서 첫 번째 행을 선택합니다. 여기에서는 그룹과 관련하여 데이터를 검색하는 방법도 살펴봅니다. 세 번째 시나리오에서는 전체 MySQL 테이블에서 첫 번째 행을 가져오는 방법을 살펴보겠습니다.

MySQL 테이블에서 첫 번째 행 선택

코드 예제로 들어가기 전에 manager_id가 기본 키인 manager_id, first_namelast_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_nameSaira인 첫 번째 행을 가져옵니다.

질문:

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_nameSair인 세 번째 레코드를 가져오고 싶다고 가정합니다. 두 개의 인수와 함께 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_nameSaira인 처음 두 개의 레코드를 가져오고 싶다고 가정합니다. 다음과 같이 할 수 있습니다.

질문:

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)

여기에서 LIMITORDER 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입니다.

다음 그림을 참조하십시오.

MySQL 첫 행 선택 - 인수 제한 그림

LIMIT row_countLIMIT 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)

이 예제에서는 다양한 함수와 절을 사용하여 원하는 결과를 얻습니다.

  1. IN() - 이 함수를 사용하면 WHERE 절에 여러 값을 지정할 수 있습니다. 표현식이 IN() 목록 값과 같으면 1을 반환합니다.
  2. GROUP BY - 주로 집계 함수(예: MIN(), MAX(), COUNT() 등)와 함께 사용되는 동일한 값을 포함하는 레코드를 그룹화합니다.
  3. MIN() - 쿼리에서 속성(컬럼)의 가장 낮은 값을 반환합니다.
  4. 하위 쿼리 - 예를 들어 SELECT, UPDATE, DELETE 등과 같이 다른 쿼리 안에 중첩됩니다. 하위 쿼리를 다른 하위 쿼리에도 중첩할 수 있습니다. 조항).

LIMITORDER 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)
Mehvish Ashiq avatar Mehvish Ashiq avatar

Mehvish Ashiq is a former Java Programmer and a Data Science enthusiast who leverages her expertise to help others to learn and grow by creating interesting, useful, and reader-friendly content in Computer Programming, Data Science, and Technology.

LinkedIn GitHub Facebook

관련 문장 - MySQL Table