执行SELECT语句查询表中数据。
前提条件
如果通过表查询数据,请创建表的映射关系。具体操作,请参见创建表的映射关系。如果通过多元索引查询数据,请创建多元索引的映射关系。具体操作,请参见创建多元索引的映射关系。
注意事项
SELECT语句中子句的执行优先级为WHERE子句 > GROUP BY分组查询 > HAVING子句 > ORDER BY排序 > LIMIT和OFFSET。
语法
SELECT
[ALL | DISTINCT | DISTINCTROW]
select_expr [, select_expr] ...
[FROM table_references | join_expr]
[WHERE where_condition]
[GROUP BY groupby_condition]
[HAVING having_condition]
[ORDER BY order_condition]
[LIMIT {[offset,] row_count | row_count OFFSET offset}]
参数
参数 | 是否必选 | 说明 |
ALL | DISTINCT | DISTINCTROW | 否 | 是否去掉重复的字段,取值范围如下:
|
select_expr | 是 | 列名或者列表达式,格式为 |
table_references | 是 | 目标表信息,可以是表名或者SELECT语句,格式为 |
join_expr | 否 | JOIN表达式,用于使用Join功能,格式为 Join功能允许将两表或多表进行连接,并返回符合连接条件和查询条件的数据。更多信息,请参见Join。 |
where_condition | 否 | WHERE子句,可配合不同条件实现相应功能。
|
groupby_condition | 否 | GROUP BY分组查询,可配合聚合函数使用,格式为 |
having_condition | 否 | HAVING子句,可配合聚合函数使用,格式为 |
order_condition | 否 | ORDER BY排序,格式为 |
row_count | 否 | 本次查询需要返回的最大行数。 |
offset | 否 | 本次查询的数据偏移量,默认偏移量为0。 |
列表达式(select_expr)
通过列表达式指定需要查询的列。使用规则如下:
使用星号(*)查询所有列,支持配合WHERE子句指定查询条件。
SELECT * FROM orders;
使用WHERE子句作为查询条件的示例如下:
SELECT * FROM orders WHERE orderprice >= 100;
使用列名指定查询的列。
SELECT username FROM orders;
使用JSON函数查询JSON对象
SELECT coljson, coljson->>'$.a' AS subdoc FROM json_table WHERE pkint = 1;
关于JSON函数的更多信息,请参见JSON函数。
目标表信息(table_references)
通过目标表信息指定需要查询的表。
SELECT orderprice FROM orders;
WHERE子句(where_condition)
通过WHERE子句查询满足指定条件的数据。使用规则如下:
配合算术运算符、关系运算符等构造的简单表达式使用。
SELECT * FROM orders WHERE username = 'lily'; SELECT * FROM orders WHERE orderprice >= 100;
配合逻辑运算符构造的组合表达式使用。
SELECT * FROM orders WHERE username = 'lily' AND orderprice >= 100;
关于操作符的更多信息,请参见SQL操作符。
GROUP BY分组查询(groupby_condition)
通过GROUP BY子句对SELECT语句的结果集按照指定条件进行分组。使用规则如下:
按照字段分组
SELECT username FROM orders GROUP BY username;
在分组的列上支持使用聚合函数
SELECT username,COUNT(*) FROM orders GROUP BY username;
SELECT的所有列中没有使用聚合函数的列,必须出现在GROUP BY中。
SELECT username,orderprice FROM orders GROUP BY username,orderprice;
关于聚合函数的更多信息,请参见聚合函数。
HAVING子句(having_condition)
通过HAVING子句对WHERE子句和GROUP BY分组查询后的分组结果集进行过滤,查询满足条件的分组结果。
通常HAVING子句与聚合函数配合使用,实现过滤。
SELECT username,SUM(orderprice) FROM orders GROUP BY username HAVING SUM(orderprice) < 500;
ORDER BY排序(order_condition)
通过ORDER BY子句按照指定字段和排序方式对查询结果集进行排序。使用规则如下:
支持使用ASC或者DESC关键字设置排序方式。 默认按照升序(ASC)排列。
SELECT * FROM orders ORDER BY orderprice DESC LIMIT 10;
支持设置多个字段进行排序。
SELECT * FROM orders ORDER BY username ASC,orderprice DESC LIMIT 10;
通常与LIMIT配合使用限定返回的行数。
SELECT * FROM orders ORDER BY orderprice LIMIT 10;