You need to enable JavaScript to run this app.
日志服务

日志服务

复制全文
SQL 语法
JOIN 子句
复制全文
JOIN 子句

JOIN 子句用于连表查询。日志服务支持跨日志项目查询、日志主题和 MySQL 外部数据源的联合查询。本文档介绍 JOIN 子句的基本的语法与典型示例。

Demo 中心

日志服务 Demo 中心提供了 SQL 语法 Demo,方便您快速体验功能。单击 SQL语法案例 立即体验。

注意

Demo 中心的数据为演示数据,请勿用于生产环境。

语法格式

JOIN 子句的语法格式如下。

* |
SELECT 
  Key
FROM table1 AS alias1 
JOIN_TYPE table2 AS alias2
  ON JOIN_CONDITION

参数说明如下:

参数

说明

Key

日志字段或表达式等。设置为字段时,格式为 table.key,即表别名.日志字段名,表示某个日志主题或数据库表中的某个日志字段。

JOIN_TYPE

JOIN 方式,日志服务支持的 JOIN 方式请参考下表。

table

日志主题或外部数据源的表。

  • 如果是日志主题,则需指定日志项目名称,例如 project1.table1
  • 位于 JOIN 关键字之前的 table 必须为日志主题;位于 JOIN 关键字之后的 table,可以为日志主题或外部数据源的表。例如 table1 必须为日志主题,table2 可以是日志主题或外部数据源的表。
  • 当名称中包含-/$*&%#@等特殊字符时,需使用双引号 "" 包裹,例如 "test-log.open_api"

alias

表别名。

JOIN_CONDITION

连表查询的条件,应指定 JOIN 前后的主体通过某个字段进行关联。例如 alias1.key1=alias2.key2

说明

JOIN_CONDITION 处需要指定表名时,应填写 AS 指定的列别名,请勿填写原始表名。

JOIN 方式(JOIN_TYPE)说明如下:

JOIN 方式

说明

LEFT JOIN

无论右表(table2)中是否存在匹配成功的数据,均只从左表(table1)返回所有 SELECT 结果。

RIGHT JOIN

无论左表(table1)中是否存在匹配成功的数据,均只从右表(table2)返回所有 SELECT 结果。

[INNER] JOIN

返回两表的交集结果。其中 ,INNER 可省略。

FULL JOIN

返回两表的并集结果。

示例

示例 1:跨日志主题查询

  • 场景
    分析活跃用户的年龄分布。在 topic1 中统计访问量,并根据 userid/uid 在 topic2 中统计访问来源的年龄分布。

  • 检索分析语句

    * | 
    select 
      count(*) as pv,
      t2.age  as age_group
    from project.topic1 as t1 left join project.topic2 as t2 on t1.userid = t2.uid 
    group by t2.age 
    order by pv desc
    
  • 检索分析结果

    age_group

    pv

    10~20

    8000

    20~30

    5000

    30~40

    2000

示例 2:跨日志项目查询

  • 场景
    分析活跃用户的年龄分布。在 project1 日志项目的 topic1 日志主题中统计访问量,并根据 userid/uid 在 project2 日志项目的 topic2 日志主题中统计访问来源的年龄分布。

  • 检索分析语句

    * | 
    select 
      count(*) as pv,
      t2.age  as age_group
    from project1.topic1 as t1 left join project2.topic2 as t2 on t1.userid = t2.uid 
    group by t2.age 
    order by pv desc
    
  • 检索分析结果

    age_group

    pv

    10~20

    8000

    20~30

    5000

    30~40

    2000

示例 3:日志主题和 MySQL 联合查询

  • 场景
    分析活跃用户的年龄分布。在名为 topic1 的日志主题和名为 tls_external_store 的外部数据源中进行联合查询,两个数据源通过 userid 和 uid 字段关联。在 topic1 日志主题中统计访问量,并根据 userid/uid 在 tls_external_store 中统计访问来源的年龄分布。

  • 检索分析语句

    * | 
    select 
      count(*) as pv,
      t2.age  as age_group
    from project.topic1 as t1 left join tls_external_store as t2 on t1.userid = t2.uid 
    group by t2.age 
    order by pv desc
    
  • 检索分析结果

    age_group

    pv

    10~20

    8000

    20~30

    5000

    30~40

    2000

最近更新时间:2025.08.19 10:54:29
这个页面对您有帮助吗?
有用
有用
无用
无用