普通 SELECT
该语句用于查询表中的内容。
格式
示例
以如下表 a 为例。
- 从表 a 中读取 name 数据。
- 在查询结果中对 name 进行去重处理。
SELECT DISTINCT name FROM a;
- 从表 a 中查询 id,name,num,然后把 num 列除以2输出,输出的列名为 avg。
SELECT id, name, num/2 AS avg FROM a;
- 从表 a 中根据筛选条件“ name = ‘a’ ” ,输出对应的 id 、name 和 num 。
SELECT id, name, num FROM a WHERE name = 'a';
- 从表 a 中查询 id,name,按照 name 分组对 num 求和,查询 num 总和小于160的行,并输出。
SELECT id, name, SUM(num) as sum FROM a GROUP BY name HAVING SUM(num) < 160;
- 从表 a 中查询 id,name,num,根据 num 按升序(ASC)输出查询结果。
SELECT * FROM a ORDER BY num ASC;
- 从表 a 中查询 id,name,num,根据 num 按降序(DESC)输出查询结果。
SELECT * FROM a ORDER BY num DESC;
- 从表 a 中查询 id,name,num,使用 LIMIT 强制 从第2行开始,返回表 a 的两行结果。
SELECT * FROM a LIMIT 1,2;
集合类 SELECT
该语句用来对多个 SELECT 查询的结果进行 UNION,EXCEPT,INTERSECT。
格式
参数 | 说明 |
UNION ALL | 合并两个查询的结果 |
UNION | 合并两个查询的结果,并去重 |
EXCEPT | 从左查询结果集中去重出现在右查询中的结果,并去重 |
INTERSECT | 保留左查询结果集中出现在右查询中的结果,并去重 |
示例
create table t1 (c1 int, c2 int);
create table t2 (c1 int, c2 int);
insert into t1 values (1, -1), (2, -2);
insert into t2 values (1, 1), (2, -2), (3, 3);
- 计算 T1, T2 的所有的记录
SELECT C1, C2 FROM T1 UNION ALL SELECT C1, C2 FROM T2;
+------+------+
+------+------+
| 1 | -1 |
| 2 | -2 |
| 1 | 1 |
| 2 | -2 |
| 3 | 3 |
+------+------+
SELECT C1, C2 FROM T1 UNION SELECT C1, C2 FROM T2;
+------+------+
| C1 | C2 |
+------+------+
| 1 | -1 |
| 2 | -2 |
| 3 | 3 |
+------+------+
- 计算 T1 和 T2 的交集
SELECT C1, C2 FROM T1 INTERSECT SELECT C1, C2 FROM T2;
+------+------+
| C1 | C2 |
+------+------+
| 2 | -2 |
+------+------+
- 计算 T1 和 T2 的差集
- 取 T1 和 T2 并集中 C2 排序最大的前两行
SELECT C1, C2 FROM T1 UNION SELECT C1, C2 FROM T2 ORDER BY C2 DESC LIMIT 2;
+------+------+
| C1 | C2 |
+------+------+
| 3 | 3 |
+------+------+