该语句用于查询表中的内容。

格式

参数解释

示例

以如下表 a 为例。

  • 从表 a 中读取 name 数据。

image.png

  • 在查询结果中对 name 进行去重处理。
  1. SELECT DISTINCT name FROM a;

  • 从表 a 中查询 id,name,num,然后把 num 列除以2输出,输出的列名为 avg。
  1. SELECT id, name, num/2 AS avg FROM a;

image.png

  • 从表 a 中根据筛选条件“ name = ‘a’ ” ,输出对应的 id 、name 和 num 。
  1. SELECT id, name, num FROM a WHERE name = 'a';

  • 从表 a 中查询 id,name,按照 name 分组对 num 求和,并输出。
  1. SELECT id, name, SUM(num) FROM a GROUP BY name;
  • 从表 a 中查询 id,name,按照 name 分组对 num 求和,查询 num 总和小于160的行,并输出。

image.png

  • 从表 a 中查询 id,name,num,根据 num 按升序(ASC)输出查询结果。
  1. SELECT * FROM a ORDER BY num ASC;

  • 从表 a 中查询 id,name,num,根据 num 按降序(DESC)输出查询结果。
  1. SELECT * FROM a ORDER BY num DESC;

image.png

该语句用于对多个 SELECT 查询的结果进行 UNION,MINUS,INTERSECT。

格式

  1. select_clause_set:
  2. simple_select [ UNION | UNION ALL | | INTERSECT] select_clause_set_right
  3. [ORDER BY sort_list_columns]
  4. select_clause_set_right:
  5. simple_select |
  6. select_caluse_set

参数解释

参数

说明

UNION ALL

合并两个查询的结果

UNION

合并两个查询的结果,并去重

MINUS

从左查询结果集中去重出现在右查询中的结果,并去重

INTERSECT

保留左查询结果集中出现在右查询中的结果,并去重

示例

以如下两表的数据为例:

  1. create table t1 (c1 int, c2 int);
  2. create table t2 (c1 int, c2 int);
  3. insert into t1 values (1, -1), (2, -2);
  4. insert into t2 values (1, 1), (2, -2), (3, 3);
  • 计算 T1, T2 的所有的记录
  1. SELECT C1, C2 FROM T1 UNION ALL SELECT C1, C2 FROM T2;
  2. +------+------+
  3. | C1 | C2 |
  4. +------+------+
  5. | 1 | -1 |
  6. | 2 | -2 |
  7. | 1 | 1 |
  8. | 2 | -2 |
  9. +------+------+
  • 计算 T1, T2 的去重后的所有记录
  • 计算 T1 和 T2 的交集
  1. SELECT C1, C2 FROM T1 INTERSECT SELECT C1, C2 FROM T2;
  2. +------+------+
  3. | C1 | C2 |
  4. +------+------+
  5. | 2 | -2 |
  6. +------+------+
  • 计算 T1 和 T2 的差集
  1. SELECT C1, C2 FROM T1 MINUS SELECT C1, C2 FROM T2;
  2. +------+------+
  3. | C1 | C2 |
  4. +------+------+
  5. | 1 | -1 |
  6. +------+------+

如果查询语句中有多个相同的子查询,可以把相同的子查询放在 with clause 作为公共表达式,在主体查询中直接引用即可。

格式

  1. with_clause_select:
  2. with_clause simple_select
  3. with_clause:
  4. WITH table_name [opt_column_alias_name_list] AS ( select_clause )
  5. select_clause:
  6. simple_select | select_clause_set
  7. opt_column_alias_name_list:
  8. (column_name_list)
  9. column_name | column_name , column_name_list

参数解释

示例

  • 以如下表格数据和 SELECT 查询为例。
  1. create table t1(c1 int, c2 int, c3 int);
  2. create table t2(c1 int);
  3. insert into t1 values(1,1,1);
  4. insert into t1 values(2,2,2);
  5. insert into t1 values(3,3,3);
  6. insert into t2 values(4);
  7. select * from t1 where c1 > (select count(*) from t2)
  8. and c2 > (select count(*) from t2)
  9. and c3 > (select count(*) from t2);
  10. +------+------+------+
  11. | C1 | C2 | C3 |
  12. +------+------+------+
  13. | 2 | 2 | 2 |
  14. | 3 | 3 | 3 |
  15. +------+------+------+
  1. with temp(cnt) as (select count(*) from t2)
  2. select t1.* from t1, temp where c1 > temp.cnt and c2 > temp.cnt and c3 > temp.cnt;
  3. +------+------+------+
  4. | C1 | C2 | C3 |
  5. +------+------+------+
  6. | 2 | 2 | 2 |
  7. | 3 | 3 | 3 |