JOIN子句用于连接多个表。日志服务支持跨Logstore、Logstore和MySQL、Logstore和OSS的联合查询。本文介绍JOIN子句的基本语法和示例。

语法

SELECT table.key
FROM table1
INNER|LEFT|RIGHT|FULL OUTER JOIN table2
ON table1.key=table2.key

日志服务支持您在SELECT语句中使用INNER JOIN子句、LEFT JOIN子句、RIGHT JOIN子句和OUTER JOIN子句。更多信息,请参见JOIN

JOIN方式 说明
INNER JOIN 所有表存在交集时,返回满足条件的SELECT结果。
LEFT JOIN 即使右表(table2)中没有匹配的数据,也从左表(table1)返回所有SELECT结果。
RIGHT JOIN 即使左表(table1)中没有匹配的数据,也从右表(table2)返回所有SELECT结果。
FULL OUTER JOIN 只要一个表中存在匹配的数据,则返回满足条件的SELECT结果。

参数说明

参数 说明
key 日志字段、表达式等,参数值为任意数据类型。
table table1为Logstore,table2为Logstore、MySQL数据库或OSS Bucket。更多信息,请参见关联MySQL数据源关联OSS数据源

示例

名为internal-diagnostic_log的Logstore用于记录各个Logstore的消费延时、告警、采集等日志,名为internal-operation_log的Logstore用于记录Project内所有资源的操作日志。您可以使用JOIN子句,联合查询两个Logstore,从而获取各个Logstore的消费组信息、延时时间和请求方法。

示例1:INNER JOIN

  • 查询和分析语句
    * |
    SELECT
      "internal-diagnostic_log".consumer_group,
      "internal-diagnostic_log".logstore,
      "internal-operation_log".Latency,
      "internal-operation_log".Method
    FROM  "internal-diagnostic_log"
      INNER JOIN "internal-operation_log" ON "internal-diagnostic_log".logstore = "internal-operation_log".logstore
    LIMIT
      10000
  • 查询和分析结果

    返回满足条件的1328条数据。

    inner join

示例2:LEFT JOIN

  • 查询和分析语句
    * |
    SELECT
      "internal-diagnostic_log".consumer_group,
      "internal-diagnostic_log".logstore,
      "internal-operation_log".Latency,
      "internal-operation_log".Method
    FROM  "internal-diagnostic_log"
      LEFT JOIN "internal-operation_log" ON "internal-diagnostic_log".logstore = "internal-operation_log".logstore
    LIMIT
      10000
  • 查询和分析结果

    从名为internal-diagnostic_log的Logstore中返回1328条数据。

    LEFT JOIN

示例3:RIGHT JOIN

  • 查询和分析语句
    * |
    SELECT
      "internal-diagnostic_log".consumer_group,
      "internal-diagnostic_log".logstore,
      "internal-operation_log".Latency,
      "internal-operation_log".Method
    FROM  "internal-diagnostic_log"
      RIGHT JOIN "internal-operation_log" ON "internal-diagnostic_log".logstore = "internal-operation_log".logstore
    LIMIT
      10000
  • 查询和分析结果

    从名为internal-operation_log的Logstore中返回1757条数据。

    RIGHT JOIN

示例4:FULL OUTER JOIN

  • 查询和分析语句
    * |
    SELECT
      "internal-diagnostic_log".consumer_group,
      "internal-diagnostic_log".logstore,
      "internal-operation_log".Latency,
      "internal-operation_log".Method
    FROM  "internal-diagnostic_log"
      FULL OUTER JOIN "internal-operation_log" ON "internal-diagnostic_log".logstore = "internal-operation_log".logstore
    LIMIT
      10000
  • 查询和分析结果

    返回满足条件的1757条数据。

    FULL OUTER JOIN