すべてのプロダクト
Search
ドキュメントセンター

PolarDB:リターン

最終更新日:Feb 07, 2025

クエリのRETURN部分で、出力するパターンの部分を定義します。 出力には、agtype値、ノード、リレーションシップ、またはプロパティを含めることができます。

戻りノード

returnステートメントで返すノードを一覧表示します。

SELECT *
FROM cypher('graph_name', $$
    MATCH (n {name: 'B'})
    RETURN n
$$) as (n agtype);

ノードが返されます。

                         n 
---------------------------------------------------
{id: 0; label: '' properties: {name: 'B'}}::vertex
(1 row)

リターンエッジ

ノードnのエッジを返すには、returnリストに含めることができます。

SELECT *
FROM cypher('graph_name', $$
    MATCH (n)-[r:KNOWS]->()
    WHERE n.name = 'A'
    RETURN r
$$) as (r agtype);

エッジが返されます。

                                r 
-------------------------------------------------------------------
{id: 2; startid: 0; endid: 1; label: 'KNOWS' properties: {}}::edge
(1 row)

戻り値のプロパティ

プロパティを返すには、ドット区切り文字を使用します。

SELECT *
FROM cypher('graph_name', $$
    MATCH (n {name: 'A'})
    RETURN n.name
$$) as (name agtype);

プロパティの値が返されます。

 name 
------
'A'
(1 row)

すべての要素を返す

クエリで見つかったすべての頂点、エッジ、およびパスを返す場合は、* 記号を使用できます。

SELECT *
FROM cypher('graph_name', $$
    MATCH (a {name: 'A'})-[r]->(b)
    RETURN *
$$) as (a agtype, b agtype, r agtype);

クエリで使用された2つの頂点とエッジが返されます。

                                                      a                                                |                                                               b                                                              |                                        r                                         
-------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------
 {"id": 281474976710659, "label": "", "properties": {"age": 55, "name": "A", "happy": "Yes!"}}::vertex | {"id": 1125899906842625, "label": "BLOCKS", "end_id": 281474976710660, "start_id": 281474976710659, "properties": {}}::edge  | {"id": 281474976710660, "label": "", "properties": {"name": "B"}}::vertex
 {"id": 281474976710659, "label": "", "properties": {"age": 55, "name": "A", "happy": "Yes!"}}::vertex | {"id": 1407374883553281, "label": "KNOWS", "end_id": 281474976710660, "start_id": 281474976710659, "properties": {}}::edge   | {"id": 281474976710660, "label": "", "properties": {"name": "B"}}::vertex
(2 rows)

珍しい文字を持つ変数

英語のアルファベットに含まれていない文字で構成されるプレースホルダーを導入するには、'を使用して変数を囲みます。

SELECT *
FROM cypher('graph_name', $$
    MATCH (`This isn\'t a common variable`)
    WHERE `This isn\'t a common variable`.name = 'A'
    RETURN `This isn\'t a common variable`.happy
$$) as (happy agtype);

名前が「A」のノードが返されます。

 happy  
--------
 "Yes!"
(1 row)

フィールドのエイリアス

フィールドの名前が使用する式と異なる場合は、列リスト定義の名前を変更して名前を変更できます。

SELECT *
FROM cypher('graph_name', $$
    MATCH (n {name: 'A'})
    RETURN n.name
$$) as (objects_name agtype);

ノードのnameプロパティは、フィールドの名前が変更されて返されます。

 objects_name 
--------------
 "A"
(1 row)

オプションのプロパティ

オプションのプロパティが存在しない場合は、nullとして扱われます。

SELECT *
FROM cypher('graph_name', $$
    MATCH (n)
    RETURN n.age
$$) as (age agtype);

存在する場合、クエリはプロパティを返し、存在しない場合はnullを返します。

 age 
-----
 55
 NULL
(2 rows)

その他の式

リテラル、述語、プロパティ、関数など、任意の式を戻り項目として使用できます。

SELECT *
FROM cypher('graph_name', $$
    MATCH (a)
    RETURN a.age > 30, 'I''m a literal', id(a)
$$) as (older_than_30 agtype, literal agtype, id agtype);

サンプル結果:

        older_than_30       |         literal             |           id                                       
----------------------------+-----------------------------+-------------------------
          true              |      'I'm a literal'        |            1 
(1 row)

ユニークな結果

DISTINCTは、出力するように選択されたフィールドに応じて一意のレコードのみを取得します。

SELECT *
FROM cypher('graph_name', $$
MATCH (a {name: 'A'})-[]->(b)
RETURN DISTINCT b
$$) as (b agtype);

サンプル結果:

                           b                                         
----------------------------------------------------------
{id: 1; label: '' properties: {name: 'B'}}::vertex
(1 row)