JOIN子句用于连接多个表。日志服务支持同Project下跨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子句和FULL JOIN子句。更多信息,请参见JOIN。
|
JOIN方式 |
说明 |
|
INNER JOIN |
所有表存在交集时,返回满足条件的SELECT结果。 |
|
LEFT JOIN |
即使右表(table2)中没有匹配的数据,也从左表(table1)返回所有SELECT结果。 |
|
RIGHT JOIN |
即使左表(table1)中没有匹配的数据,也从右表(table2)返回所有SELECT结果。 |
|
FULL JOIN |
只要一个表中存在匹配的数据,则返回满足条件的SELECT结果。 |
参数说明
|
参数 |
说明 |
|
key |
日志字段、表达式等,参数值为任意数据类型。 |
|
table |
table1为LogStore,table2为LogStore、MySQL数据库或OSS Bucket。更多信息,请参见关联MySQL数据源、关联OSS数据源。 |
示例
在某个Project下,名为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条数据。
结果包含 consumer_group、logstore、latency、method 四列,示例数据中 consumer_group 为
etl-cf43c82162ac3ca60a906ebec4c6b87b,logstore 为website_log,method 为PullData,latency 值各行不同(如 513、591、465 等)。
示例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条数据。
查询结果包含 consumer_group、logstore、latency、method 四列,其中 method 列的值包括 ConsumerGroupHeartBeat 和 PullData。
示例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条数据。
结果表格包含
consumer_group、logstore、latency、method四列,其中consumer_group和logstore列值均为 null(表示右表中未匹配到左表的记录),method列值均为 PostLogStoreLogs,latency列显示不同的延迟数值。
示例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条数据。
查询结果表格包含 consumer_group、logstore、latency、method 四列,其中 consumer_group 和 logstore 列值为 null,method 列值均为 PostLogStoreLogs。