MySQL에서 데이터 정렬 및 필터링은 데이터베이스 쿼리에서 매우 중요한 부분입니다. 이를 통해 원하는 데이터를 빠르게 찾고, 특정 기준에 맞게 데이터를 정렬할 수 있습니다.
예시 코드에 사용될 테이블을 생성하겠습니다. 아래 코드를 복사하여 테이블 및 데이터를 생성해주세요.
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);
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 |