简单处理查询结果
考试分数(五)
https://www.nowcoder.com/practice/b626ff9e2ad04789954c2132c74c0513
简单处理查询结果
前面章节中的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 |