MySQL에서 데이터 정렬 및 필터링은 데이터베이스 쿼리에서 매우 중요한 부분입니다. 이를 통해 원하는 데이터를 빠르게 찾고, 특정 기준에 맞게 데이터를 정렬할 수 있습니다.

0. 예시 테이블 생성

예시 코드에 사용될 테이블을 생성하겠습니다. 아래 코드를 복사하여 테이블 및 데이터를 생성해주세요.

CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(50),
    age INT,
    city VARCHAR(50)
);

CREATE TABLE employees (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(50),
    age INT,
    salary DECIMAL(10, 2)
);

INSERT INTO users (name, age, city) VALUES
('John', 28, 'Seoul'),
('Jane', 34, 'Busan'),
('Alice', 22, 'Seoul'),
('Bob', 31, 'Seoul'),
('Chris', 40, 'Incheon'),
('David', 25, 'Busan');

INSERT INTO employees (name, age, salary) VALUES
('John', 28, 5500.00),
('Jane', 34, 6500.00),
('Alice', 22, 4000.00),
('Bob', 31, 6200.00),
('Chris', 40, 8000.00);

1. ORDER BY

ORDER BY는 데이터를 특정 컬럼을 기준으로 정렬할 때 사용됩니다. 기본적으로 오름차순(ASC, 작은 값에서 큰 값으로)으로 정렬되며, 내림차순(DESC, 큰 값에서 작은 값으로)도 가능합니다.

SELECT 컬럼1, 컬럼2
FROM 테이블명
ORDER BY 컬럼1 [ASC|DESC], 컬럼2 [ASC|DESC];

예시 코드

SELECT name, age
FROM users
ORDER BY age ASC;  -- 나이를 기준으로 오름차순 정렬
name age
Alice 22
David 25
John 28
Bob 31
Jane 34
Chris 40

복수 컬럼 정렬

SELECT name, age, salary
FROM employees
ORDER BY age ASC, salary DESC;  -- 나이를 기준으로 오름차순, 같은 나이일 경우 급여를 기준으로 내림차순 정렬
name age salary
Alice 22 4000.00
John 28 5500.00
Bob 31 6200.00
Jane 34 6500.00
Chris 40 8000.00