無料スクリプト配布のPHP.TO   PHPの実用的なtips PHPマニュアル MySQLマニュアル Apacheマニュアル PostgreSQLマニュアル マニュアル検索    

7.7. VALUES リスト

VALUES は、実際にディスク上にテーブルを生成し、値を投入することなく、問い合わせの中で使用することができる "定数テーブル" を生成する手法を提供します。 構文を以下に示します。

VALUES ( 

expression

 [, ...] ) [, ...]

括弧で括られた式のリストがそれぞれ、そのテーブル内である行を生成します。 リストは同一の要素数(つまり、テーブルの列数)を持たなければなりません。 また、各リストで対応する項目のデータ型に互換性がなければなりません。 最終的に実際各列に割り当てられるデータ型は、 UNION 同様の規則に従って決定されます。 ( 項10.5 を参照してください。)

以下に例を示します。

VALUES (1, 'one'), (2, 'two'), (3, 'three');

これは、2列3行のテーブルを返します。 実質以下と同じです。

SELECT 1 AS column1, 'one' AS column2
UNION ALL
SELECT 2, 'two'
UNION ALL
SELECT 3, 'three';

デフォルトでは、 PostgreSQL VALUES テーブルの各列に column1 column2 といった名前をつけます。 標準SQLでは列名は規定されていませんので、他のデータベースシステムでは他の名前を付与しています。 そのため、通常はテーブル別名リストを使用して、以下のようにデフォルトの名前を上書きする方がよいでしょう。

=> SELECT * FROM (VALUES (1, 'one'), (2, 'two'), (3, 'three')) AS t (num,letter);
 num | letter
-----+--------
   1 | one
   2 | two
   3 | three
(3 rows)

文法的には、式リストに続く VALUES は、以下と同様に扱われます。

SELECT 

select_list

 FROM 

table_expression

そして、 SELECT が記述できるところであれば、記述することができます。 例えば、 UNION の一部として使用することもできますし、 sort_specification ( ORDER BY LIMIT OFFSET )に付けることもできます。 VALUES INSERT コマンドの元データとしてもっとも頻繁に使用されます。 次に使用頻度が高いのは副問い合わせとしての使用です。

詳しくは VALUES を参照してください。


powered by SEO.CUG.NET