简单处理查询结果
前面章节中的SELECT 语句都是返回所有匹配的行。但是如果你想对结果进行简单处理,你应该怎么办呢?
1. 查询结果的过滤
使用 WHERE 子句可以根据条件过滤查询结果。
语法:
SELECT column1, column2, ...
FROM table_name
WHERE condition;
condition:限制条件。
2. 查询结果的排序
使用 ORDER BY 子句可以根据指定的列对查询结果进行排序。
语法:
SELECT column1, column2, ...
FROM table_name
ORDER BY column1 [ASC|DESC], column2 [ASC|DESC], ...;
column1 [ASC|DESC]:按照column1 [升序|降序]进行排序,若不加ASC或者DESC则默认升序。
3. 查询结果的去重
使用 DISTINCT 关键字可以去除查询结果中的重复行。
语法:
SELECT DISTINCT column1, column2, ...
FROM table_name;
- 对
column1, column2, ...列中的重复行进行去除。
4. 查询结果的限制
在某些数据库系统中,可以使用 LIMIT 子句限制查询结果的行数。
语法:
SELECT column1, column2, ...
FROM table_name
LIMIT n;
- 限制输出
n行。
示例
假设 employees 表的数据如下:
| 1 | Alice | Smith | 60000 | 101 |
| 2 | Bob | Johnson | 70000 | 101 |
| 3 | Charlie | Brown | 50000 | 102 |
| 4 | David | Davis | 80000 | 102 |
| 5 | Eve | White | 90000 | 103 |
查询结果的过滤
查询 employees 表中工资大于 60000 的员工。
SELECT *
FROM employees
WHERE salary > 60000;
结果:
| 2 | Bob | Johnson | 70000 | 101 |
| 4 | David | Davis | 80000 | 102 |
| 5 | Eve | White | 90000 | 103 |
查询结果的排序
查询 employees 表中的所有员工,并按工资降序排序。
SELECT *
FROM employees
ORDER BY salary DESC;
结果:
| 5 | Eve | White | 90000 | 103 |
| 4 | David | Davis | 80000 | 102 |
| 2 | Bob | Johnson | 70000 | 101 |
| 1 | Alice | Smith | 60000 | 101 |
| 3 | Charlie | Brown | 50000 | 102 |
查询结果的去重
查询 employees 表中所有(不重复)的部门 ID。
SELECT DISTINCT department_id
FROM employees;
结果:
| 101 |
| 102 |
| 103 |
查询结果的限制
查询 employees 表中工资最高的 3 名员工。
SELECT *
FROM employees
ORDER BY salary DESC
LIMIT 3;
- 把工资降序排序,然后输出前三个。
结果:
| 5 | Eve | White | 90000 | 103 |
| 4 | David | Davis | 80000 | 102 |
| 2 | Bob | Johnson | 70000 | 101 |

京公网安备 11010502036488号