API SQL脚本编辑说明

本文为您介绍查询类型和操作类型的脚本编辑说明。

Get/List(查询类型)

  • 支持的查询模式:

    • 支持同一数据源下的单表查询、多表关联查询(Join)和嵌套查询(子查询)。

    • 支持高级SQL模式(MyBatis风格)。

    • 支持在Select区域配置参数,例如:SELECT id_card, SUM(CASE WHEN id_card LIKE ${id_card} THEN 1 ELSE 0 END) AS proj_score FROM table WHERE c LIKE ${id_card} GROUP BY id_card

  • 不支持的语法与用法:

    • 多条SQL查询语句:不支持在单个API中执行多条SQL(如:SELECT ...; SELECT ...;)。

    • DQL语句:在ListGet操作类型API中,不支持INSERT、UPDATE、CREATEDELETE等非DQL语法。

    • SELECT *:不支持SELECT *查询,查询时必须明确指定查询的列。

    • 列名前缀:若列名带表前缀(例如:t.name),必须使用别名作为返回参数名SELECT t.name AS name FROM table

    • 聚合函数:使用SUM()COUNT()MAX()MIN() 等聚合函数时,必须使用别名作为返回参数名。例如:SELECT SUM(num) AS total_num FROM table

    • 分页语句:不支持在SQL中使用分页语句,需通过分页参数实现分页。

      说明
      • 当数据源为SAP HANA,需要在SQL中使用分页语句,定义分页参数实现分页。

      • 当数据源为TDengine,需要在SQL中使用分页语句,若不传入分页参数(即PageStart、PageSize),则返回全量数据;若传入分页参数,则根据定义的分页参数返回数据。

  • 动态字段查询(高级SQL模式),支持通过参数动态指定返回字段,并将参数写在查询语句内。

    • 参数格式:必须以var_cols开头,格式为:var_cols_xxx(如var_col_args),如SELECT id, ${var_cols_args} FROM table1

    • 返回参数:返回参数中需要将所有可支持的动态查询的字段添加为返回参数。

    • 调用API:调用API时,在动态参数中传入需要查询的字段即可,未传入的字段在返回结果中为null值。例如:var_col_args=name,age,dept

    • 实际执行:SQL语句为:SELECT id, name, age, dept FROM table1

  • SQL模式为高级SQL时,在Mybatis SQL中,比较运算符需要用转义字符。

    原符号

    转义符号

    <

    &lt;

    >

    &gt;

    <=

    &lt;=

    >=

    &gt;=

  • 数据源特异性限制:

    数据源

    限制说明

    TDengine

    • 必须在SQL中使用LIMIT/OFFSET实现分页。

    • 不支持可选参数。

    SAP HANA

    • 不支持分页,即传入PageStart、PageSize参数不生效。

    • 不支持可选参数。

    Elasticsearch

    • 使用ScrollId实现分页查询。当不指定ScrollId时,最多只能查询前10000条数据,调用设置分页PageStartPageSize时,请注意不要查询超过10000条数据,否则调用会失败。

      例如:PageStart设置为9998,PageSize最大只能设置为2。

    • 如果要查询10000条以后的数据,需要使用where语句指定scrollId,可以在API开发时指定一个请求参数scrollId,查询时传入对应的scrollId值。

      说明

      指定了scrollId值查询时,就不能使用分页,即PageStartPageSize不能传值,否则调用失败。

    • where语句中只支持scrollId字段作为条件查询,其余字段不生效。

      例如:select a from table where scrollId=${scrollId}

    • 不支持子查询语句。

    HBase

    • 仅支持单条rowkey查询,其中rowkey是必填的请求参数,查询语法为:

      select info1.id as name from table where rowkey = ${rowkey}
    • 不支持Order by排序语法。

    • 不支持分页,即传入PageStart、PageSize参数不生效。

    • 不支持Join语句。

    PostgreSQL

    不支持跨Schema查询,仅限当前连接的Schema查询数据。

    Impala

    不支持高级SQL模式(MyBatis风格)。

    Lindorm

    不支持JOIN语句。

Create/Update/Delete(操作类型)

  • 支持的SQL模式:

    • 基础SQL模式:支持标准INSERTUPDATEDELETE语句,使用${param}占位符传参,适用于简单场景。

    • 高级SQL模式(MyBatis 风格):可用于条件判断、动态字段、批量操作等复杂逻辑,支持的标签如下:

      <if>、<choose>、<when>、<otherwise>、<trim>、<foreach>
  • 高级SQL模式且是批量处理时,每条数据会单独执行,性能较差。因此在批量增删改接口中,请尽量避免使用高级模式。

  • SQL中包含in条件参数,则每条数据会单独执行,性能较差。请尽量避免使用in条件参数。

  • PostgreSQL支持RETURNING语法。