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