Updated on 2022-06-11 GMT+08:00

VALUES

Function

VALUES computes a row or a set of rows based on given values. It is most commonly used to generate a constant table within a large command.

Precautions

  • VALUES lists with large numbers of rows should be avoided, as you might encounter out-of-memory failures or poor performance. VALUES appearing within INSERT is a special case, because the desired column types are known from the INSERT's target table, and need not be inferred by scanning the VALUES list. In this case, VALUE can handle larger lists than are practical in other contexts.
  • If more than one row is specified, all the rows must have the same number of elements.

Syntax

1
2
3
4
VALUES {( expression [, ...] )} [, ...]
    [ ORDER BY { sort_expression [ ASC | DESC | USING operator ] } [, ...] ]
    [ { [ LIMIT { count | ALL } ] [ OFFSET start [ ROW | ROWS ] ] } | { LIMIT start, { count | ALL } } ]
    [ FETCH { FIRST | NEXT } [ count ] { ROW | ROWS } ONLY ];

Parameter Description

  • expression

    Specifies a constant or expression to compute and insert at the indicated place in the resulting table or set of rows.

    In a VALUES list appearing at the top level of an INSERT, an expression can be replaced by DEFAULT to indicate that the destination column's default value should be inserted. DEFAULT cannot be used when VALUES appears in other contexts.

  • sort_expression

    Specifies an expression or integer constant indicating how to sort the result rows.

  • ASC

    Indicates ascending sort order.

  • DESC

    Indicates descending sort order.

  • operator

    Specifies a sorting operator.

  • count

    Specifies the maximum number of rows to return.

  • start

    Specifies the number of rows to skip before starting to return rows.

  • FETCH { FIRST | NEXT } [ count ] { ROW | ROWS } ONLY

    The FETCH clause restricts the total number of rows starting from the first row of the return query result, and the default value of count is 1.

Examples

Create the tpcds.reason_t2 table.

1
2
3
4
5
6
CREATE TABLE tpcds.reason_t2
(
  r_reason_sk    integer,
  r_reason_id    character(16),
  r_reason_desc  character(100)
);

Insert a record into a table.

1
INSERT INTO tpcds.reason_t2(r_reason_sk, r_reason_id, r_reason_desc) VALUES (1, 'AAAAAAAABAAAAAAA', 'reason1');

Insert a record into a table. This command is equivalent to the last one.

1
INSERT INTO tpcds.reason_t2 VALUES (2, 'AAAAAAAABAAAAAAA', 'reason2');

Insert records into the table.

1
INSERT INTO tpcds.reason_t2 VALUES (3, 'AAAAAAAACAAAAAAA','reason3'),(4, 'AAAAAAAADAAAAAAA', 'reason4'),(5, 'AAAAAAAAEAAAAAAA','reason5');

Insert records whose r_reason_sk in the tpcds.reason table is less than 5.

1
INSERT INTO tpcds.reason_t2 SELECT * FROM tpcds.reason WHERE r_reason_sk <5;

Clear existing data in the table and insert data to the table.

1
insert overwrite into tpcds.reason_t2 values (6, 'BBAAAAAAAAAAAAAA', 'reason6');

Delete the tpcds.reason_t2 table.

1
DROP TABLE tpcds.reason_t2;