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

OpenSearch:SELECT

最終更新日:Jun 23, 2026

SELECT

説明

SELECT 文は、テーブルからデータを取得します。

すべての高度なクエリは、SELECT 文をベースにしています。このセクションでは、HA3 がサポートする基本的な SELECT 構文について説明します。高度な使用方法については、関連トピックをご参照ください。

サポートバージョン

>= Ha3 3.7.0

構文

SELECT:
  SELECT [ DISTINCT ]
   { * | projectItem [, projectItem ]* }
  FROM tableExpression
   [ WHERE booleanExpression ]
   [ GROUP BY { groupItem [, groupItem ]* } ]
    [ ORDER BY { orderByItem [, OrderByItem ]* }]
   [ HAVING booleanExpression ]
    [ LIMIT number]
    [ OFFSET number]
  
projectItem:
  expression [ [ AS ] columnAlias ]
  | tableAlias . *

SELECT * FROM table;

SELECT f1, f2 AS ff FROM table;

SELECT DISTINCT f FROM table;

SELECT * FROM (
      SELECT f1, count(*) AS num
      FROM t1
      GROUP BY f1
  ) tt
  WHERE tt.num > 100;

CASE WHEN

説明

CASE WHEN 式は、if...else if...else 文のように動作します。WHEN 条件が満たされた場合、対応する THEN 式の値を返します。いずれの WHEN 条件も満たされない場合、ELSE 式の値を返します。

サポートバージョン

>= Ha3 3.7.5

構文

CASE 
WHEN condition_1 THEN expression_1
WHEN condition_2 THEN expression_2
……
ELSE expression_n
END

  1. CASE WHEN を出力式として使用する

SELECT  
    CASE    
        WHEN warehouse_id=48 THEN warehouse_id
        WHEN warehouse_id=24 THEN id 
        ELSE wave_status 
    END AS aa
FROM    s_wmp_package_wave
WHERE   wave_status = 0
LIMIT   10;
  1. CASE WHEN を条件式として使用する

SELECT * FROM
(
  SELECT  
  CASE    
    WHEN warehouse_id=48 THEN warehouse_id
    WHEN warehouse_id=24 THEN id 
    ELSE wave_status 
  END AS aa
  FROM    s_wmp_package_wave
  WHERE   wave_status = 0
) t
WHERE t.aa > 10
LIMIT   10;
SELECT *
FROM s_wmp_package_wave
WHERE CASE 
        WHEN warehouse_id=48 THEN warehouse_id
  WHEN warehouse_id=24 THEN id
        ELSE buyer_id
END > 10
AND wave_status = 0
LIMIT   10;

注意事項

  1. THEN 式と ELSE 式の値は、すべて同じデータ型である必要があります。

  2. CASE WHEN は、独立した式としてのみ使用できます。他の式やユーザー定義関数 (UDF) 内にネストすることはできません。以下に、サポートされていない構文の例を示します。

SELECT *
FROM s_wmp_package_wave
WHERE CASE 
        WHEN warehouse_id=48 THEN warehouse_id
  WHEN warehouse_id=24 THEN id
        ELSE buyer_id
END + wave_status> 10
LIMIT   10;
  1. CASE WHEN多値フィールドと組み合わせて使用しないでください。

  2. ELSE 分岐を含める必要があります。