无表查询

1. 功能概述

无表查询支持在不依赖实际数据库表的情况下,直接执行不包含 FROM 子句的 SQL 查询语句,获取计算结果、常量值或系统信息,主要用于表达式计算、系统函数调用、常量查询等场景。

注意:自 V2.0.11 版本起支持该功能。

2. 语法定义

SELECT expression [ [ AS ] column_alias ]
    [, expression [ [ AS ] column_alias ] ]*;

其中:

  • expression:待计算的表达式,可以是常量、数学函数、字符串函数、日期时间函数、聚合函数,目前支持无参数或只需传入常量参数的函数。

  • column_alias:可选的结果列别名,用于提升查询结果的可读性。未指定别名时,系统会自动生成 _col0、_col1 等列名。

  • 不支持使用 SELECT *。

  • 执行 SELECT COUNT(*); 时,结果始终为 1。

3. 使用示例

3.1 常量与数学计算

查询语句:

SELECT 100 + 50 AS sum_result,
  10 * 5 AS product,
  SQRT(144) AS square_root,
  ABS(-25) AS absolute_value,
  SIN(1) AS sin_value;

返回结果:

+----------+-------+-----------+--------------+------------------+
|sum_result|product|square_root|absolute_value|         sin_value|
+----------+-------+-----------+--------------+------------------+
|       150|     50|       12.0|            25|0.8414709848078965|
+----------+-------+-----------+--------------+------------------+

3.2 字符串函数

查询语句:

SELECT
  CONCAT('Hello', ' ', 'World') AS greeting,
  UPPER('iotdb') AS uppercase,
  LOWER('IOTDB') AS lowercase,
  LENGTH('database') AS str_length;

返回结果:

+-----------+---------+---------+----------+
|   greeting|uppercase|lowercase|str_length|
+-----------+---------+---------+----------+
|Hello World|    IOTDB|    iotdb|         8|
+-----------+---------+---------+----------+

3.3 日期时间函数

查询语句:

SELECT NOW() AS now_time;

返回结果:

+-------------+
|     now_time|
+-------------+
|1784776724555|
+-------------+

3.4 聚合函数

查询语句:

SELECT
  AVG(10),
  SUM(10),
  COUNT(10),
  COUNT(*);

返回结果:

+-----+-----+-----+-----+
|_col0|_col1|_col2|_col3|
+-----+-----+-----+-----+
| 10.0| 10.0|    1|    1|
+-----+-----+-----+-----+