執行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;