レコードの操作

フィールド・ステップを使用して、レコードからフィールドの値を選択できます。たとえば、フロリダに居住する個人のID、姓および都市を戻すには、次のようにします。

sql-> SELECT id, lastname, p.address.city
FROM Persons p WHERE p.address.state = "FL";
 +----+----------+------------+
 | id | lastname |    city    |
 +----+----------+------------+
 |  3 | Morgan   | Middleburg |
 +----+----------+------------+

1 row returned 

前述の問合せでは、パス式p.address.stateは2つのフィールド・ステップで構成されています。.addressは現在の行のaddressフィールドを選択し(行は、フィールドが行の列であるレコードとして表示できます)、.stateは現在の住所のstateフィールドを選択します。

サンプル・レコードには、電話番号の配列が含まれています。パス・ステップとシーケンス比較演算子の組合せを使用して、この配列に対する問合せを作成できます。たとえば、市外局番が423である電話番号を持つ個人の姓を戻すには、次のようにします。

sql-> SELECT lastname FROM Persons
p WHERE p.address.phones.areacode =any 423;
 +----------+
 | lastname |
 +----------+
 | Morrison |
 +----------+

1 row returned 

前述の問合せでは、パス式p.address.phones.areacodeによって、個人のすべての市外局番が戻されます。次に、この市外局番のシーケンスに数値423が含まれる場合、=any演算子はtrueを戻します。フィールド・ステップ.areacodeが配列フィールド(phones)に適用されることにも注意してください。これは、配列にレコードまたはマップが含まれている場合に許可されます。この場合、フィールド・ステップは配列の各要素に順番に適用されます。

次の例では、3つの関連付けを持つすべての個人が戻されます。connectionsの後に[]が使用されていることに注意してください。これは、connections配列のすべての要素をシーケンスとして戻す配列フィルタ・ステップです(これにより、配列のネストが解除されます)。

sql-> SELECT id, firstName, lastName, connections from Persons where 
connections[] =any 3 ORDER BY id;
 +----+-----------+----------+-------------+
 | id | firstName | lastName | connections |
 +----+-----------+----------+-------------+
 |  1 | David     | Morrison | 2           |
 |    |           |          | 3           |
 +----+-----------+----------+-------------+
 |  2 | John      | Anderson | 1           |
 |    |           |          | 3           |
 +----+-----------+----------+-------------+
 |  4 | Peter     | Smith    | 3           |
 |    |           |          | 5           |
 |    |           |          | 1           |
 |    |           |          | 2           |
 +----+-----------+----------+-------------+
 |  5 | Dana      | Scully   | 2           |
 |    |           |          | 4           |
 |    |           |          | 1           |
 |    |           |          | 3           |
 +----+-----------+----------+-------------+

4 rows returned 

この問合せでは、表の主キーに対してソートが実行されているため、ORDER BYを使用して結果をソートできます。次の項では、索引を使用した主キー以外のフィールドのソートを示します。

配列に含まれるデータに対する問合せの例をさらに見るには、配列の操作を参照してください。