全部產品
Search
文件中心

Tablestore:查詢資料

更新時間:Jun 30, 2024

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

是否去掉重複的欄位,取值範圍如下:

  • ALL(預設):返回欄位中所有重複的值。

  • DISTINCT:去掉重複的欄位,返回去重欄位後的值。

  • DISTINCTROW:去掉重複的行,返回去重行後的值。

select_expr

列名或者列運算式,格式為column_name[, column_name][, column_exp],...。更多資訊,請參見列運算式(select_expr)

table_references

目標表資訊,可以是表名或者SELECT語句,格式為table_name | select_statement。更多資訊,請參見目標表資訊(table_references)

join_expr

JOIN運算式,用於使用Join功能,格式為table_references join_type table_references [ ON join_condition | USING ( join_column [, ...] ) ]。當要使用Join功能時才需要配置此參數。

Join功能允許將兩表或多表進行串連,並返回符合串連條件和查詢條件的資料。更多資訊,請參見Join

where_condition

WHERE子句,可配合不同條件實現相應功能。

  • 配合關係運算子查詢符合指定條件的資料,格式為column_name operator value [AND | OR] [column_name operator value]。更多資訊,請參見WHERE子句(where_condition)

  • 配合匹配查詢或者短語匹配查詢條件實現全文檢索索引。更多資訊,請參見全文檢索索引

  • 配合ARRAY_EXTRACT(col_name)函數實現多元索引數群組類型的資料查詢。更多資訊,請參見多元索引數群組類型

    其中col_name為數組列名。

  • 配合運算子或使用NESTED_QUERY(subcol_column_condition)函數實現多元索引巢狀型別的資料查詢。更多資訊,請參見多元索引巢狀型別

    其中subcol_column_condition為同一嵌套層級下的子列查詢條件。

  • 配合虛擬列查詢滿足條件的資料。更多資訊,請參見多元索引虛擬列

groupby_condition

GROUP BY分組查詢,可配合彙總函式使用,格式為column_name。更多資訊,請參見GROUP BY分組查詢(groupby_condition)

having_condition

HAVING子句,可配合彙總函式使用,格式為 aggregate_function(column_name) operator value。更多資訊,請參見HAVING子句(having_condition)

order_condition

ORDER BY排序,格式為column_name [ASC | DESC][,column_name [ASC | DESC],...]。更多資訊,請參見ORDER BY排序(order_condition)

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;