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

Time Series Database:WHERE 句

最終更新日:Jan 14, 2025

WHERE 句を使用して、フィールド、タグ、またはタイムスタンプに基づいてデータをフィルタリングできます。

構文

SELECT_clause FROM_clause WHERE <conditional_expression> [(AND|OR) <conditional_expression> [...]]

[構文の説明]

WHERE 句は、フィールド、タグ、またはタイムスタンプの条件式をサポートしています。

[フィールド]

field_key <operator> ['string' | boolean | float | integer]

WHERE 句は、フィールド値の比較をサポートしています。フィールド値は、文字列、ブール値、浮動小数点数、または整数です。

文字列型のフィールド値は、単一引用記号(')で囲む必要があります。単一引用記号(')を使用しない場合、または二重引用記号(")を使用した場合、結果は返されず、エラーメッセージも返されません。次の表に、サポートされている演算子を示します。

演算子説明
=等しい
<>等しくない
!=等しくない
>より大きい
>=以上
<より小さい
<=以下

算術演算子と正規表現もサポートされています。

[タグ]

tag_key <operator> ['tag_value']

タグ値は単一引用記号(')で囲みます。単一引用記号(')を使用しない場合、または二重引用記号(")を使用した場合、結果は返されず、エラーメッセージも返されません。次の表に、サポートされている演算子を示します。

演算子説明
=等しい
<>等しくない
!=等しくない

正規表現もサポートされています。

[タイムスタンプ]

ほとんどの SELECT ステートメントでは、デフォルトの時間範囲は 1677-09-21 00:12:43.145224194 UTC から 2262-04-11T23:47:16.854775806Z UTC です。GROUP BY time() 句を含む SELECT ステートメントでは、デフォルトの時間範囲は 1677-09-21 00:12:43.145224194 UTC から現在までです。

フィールド値が指定された条件を満たすデータポイントをクエリする
> SELECT * FROM "h2o_feet" WHERE "water_level" > 8
name: h2o_feet
--------------
time                   level description      location       water_level
2015-08-18T00:00:00Z   between 6 and 9 feet   coyote_creek   8.12
2015-08-18T00:06:00Z   between 6 and 9 feet   coyote_creek   8.005
[...]
2015-09-18T00:12:00Z   between 6 and 9 feet   coyote_creek   8.189
2015-09-18T00:18:00Z   between 6 and 9 feet   coyote_creek   8.084

h2o_feet メジャーメントのデータポイントがクエリされます。データポイントは、water_level フィールドの値が 8 より大きいという条件を満たしています。

文字列型のフィールド値が指定された条件を満たすデータポイントをクエリする

> SELECT * FROM "h2o_feet" WHERE "level description" = 'below 3 feet'
name: h2o_feet
--------------
time                   level description   location       water_level
2015-08-18T00:00:00Z   below 3 feet        santa_monica   2.064
2015-08-18T00:06:00Z   below 3 feet        santa_monica   2.116
[...]
2015-09-18T14:06:00Z   below 3 feet        santa_monica   2.999
2015-09-18T14:36:00Z   below 3 feet        santa_monica   2.907

h2o_feet メジャーメントのデータポイントがクエリされます。データポイントは、level description フィールドの値が below 3 feet であるという条件を満たしています。文字列型のフィールド値は、単一引用記号(')で囲む必要があります。

フィールド値が指定された条件を満たすデータポイントをクエリする(WHERE 句に算術演算子が含まれている)

> SELECT * FROM "h2o_feet" WHERE "water_level" + 2 > 11.9
name: h2o_feet
--------------
time                   level description           location       water_level
2015-08-29T07:06:00Z   at or greater than 9 feet   coyote_creek   9.902
2015-08-29T07:12:00Z   at or greater than 9 feet   coyote_creek   9.938
2015-08-29T07:18:00Z   at or greater than 9 feet   coyote_creek   9.957
2015-08-29T07:24:00Z   at or greater than 9 feet   coyote_creek   9.964
2015-08-29T07:30:00Z   at or greater than 9 feet   coyote_creek   9.954
2015-08-29T07:36:00Z   at or greater than 9 feet   coyote_creek   9.941
2015-08-29T07:42:00Z   at or greater than 9 feet   coyote_creek   9.925
2015-08-29T07:48:00Z   at or greater than 9 feet   coyote_creek   9.902
2015-09-02T23:30:00Z   at or greater than 9 feet   coyote_creek   9.902

h2o_feet メジャーメントのデータポイントがクエリされます。データポイントは、water_level フィールドの値に 2 を加算すると、合計値が 11.9 より大きくなるという条件を満たしています。算術演算子の標準的な優先順位が適用されます。詳細については、「InfluxQL 算術演算子」のトピックをご参照ください。

タグ値が指定された条件を満たすデータポイントをクエリする

> SELECT "water_level" FROM "h2o_feet" WHERE "location" = 'santa_monica'
name: h2o_feet
--------------
time                   water_level
2015-08-18T00:00:00Z   2.064
2015-08-18T00:06:00Z   2.116
[...]
2015-09-18T21:36:00Z   5.066
2015-09-18T21:42:00Z   4.938

h2o_feet メジャーメントのデータポイントがクエリされます。データポイントは、location タグの値が santa_monica であるという条件を満たしています。文字列型のフィールド値は、単一引用記号(')で囲む必要があります。

フィールド値とタグ値が同時に指定された条件を満たすデータポイントをクエリする

> SELECT "water_level" FROM "h2o_feet" WHERE "location" <> 'santa_monica' AND ("water_level" < -0.59 OR "water_level" > 9.95)
name: h2o_feet
--------------
time                   water_level
2015-08-29T07:18:00Z   9.957
2015-08-29T07:24:00Z   9.964
2015-08-29T07:30:00Z   9.954
2015-08-29T14:30:00Z   -0.61
2015-08-29T14:36:00Z   -0.591
2015-08-30T15:18:00Z   -0.594

h2o_feet メジャーメントのデータポイントがクエリされます。データポイントは、location タグの値が santa_monica ではなく、water_level フィールドの値が -0.59 より小さいか、9.95 より大きいという条件を満たしています。WHERE 句は、AND 演算子と OR 演算子をサポートしています。これらの 2 つの演算子は、括弧()を使用して論理的に区切ることができます。

タイムスタンプが指定された条件を満たすデータポイントをクエリする

> SELECT * FROM "h2o_feet" WHERE time > now() - 7d

h2o_feet メジャーメントのデータポイントがクエリされます。データポイントは、タイムスタンプが過去 7 日間に生成されたという条件を満たしています。WHERE 句でサポートされているタイムスタンプ構文の詳細については、「時間の構文」のトピックをご参照ください。

WHERE 句に関する FAQ

結果が返されない場合、エラーのトラブルシューティングを行うにはどうすればいいですか?

文字列型のタグ値またはフィールド値が単一引用記号(')で囲まれているかどうかを確認します。単一引用記号(')を使用しない場合、または二重引用記号(")を使用した場合、結果は返されず、エラーメッセージも返されません。

次のコードブロックは、3 つのステートメントを示しています。最初の 2 つのステートメントでは、santa_monica タグ値が単一引用記号(')で囲まれていないか、二重引用記号(")で囲まれています。この場合、結果は返されません。3 番目のステートメントでは、santa_monica タグ値が単一引用記号(')で囲まれています。この場合、結果は返されます。

> SELECT "water_level" FROM "h2o_feet" WHERE "location" = santa_monica
> SELECT "water_level" FROM "h2o_feet" WHERE "location" = "santa_monica"
> SELECT "water_level" FROM "h2o_feet" WHERE "location" = 'santa_monica'
name: h2o_feet
--------------
time                   water_level
2015-08-18T00:00:00Z   2.064
[...]
2015-09-18T21:42:00Z   4.938

次のコードブロックは、3 つのステートメントを示しています。最初の 2 つのステートメントでは、文字列型のフィールド値が単一引用記号(')で囲まれていないか、二重引用記号(")で囲まれています。最初のステートメントでは、フィールド値にスペースが含まれているため、エラーメッセージが返されます。2 番目のステートメントでは、結果は返されません。3 番目のステートメントでは、フィールド値が単一引用記号(')で囲まれています。この場合、結果は返されます。

> SELECT "level description" FROM "h2o_feet" WHERE "level description" = at or greater than 9 feet
ERR: error parsing query: found than, expected ; at line 1, char 86
> SELECT "level description" FROM "h2o_feet" WHERE "level description" = "at or greater than 9 feet"
> SELECT "level description" FROM "h2o_feet" WHERE "level description" = 'at or greater than 9 feet'
name: h2o_feet
--------------
time                   level description
2015-08-26T04:00:00Z   at or greater than 9 feet
[...]
2015-09-15T22:42:00Z   at or greater than 9 feet