You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在仅具只读权限时对外部数据集与表执行Outer Join?

问题描述

我有一份外部数据集:

Column AColumn B
a1b1
a2b2

需要将其与系统内某张表(假设表名为target_table)执行Outer Join,该表结构及数据如下:

Column AColumn BColumn C
a1b2c3
a2b2c4

我只有系统的只读权限,无法创建新表,想要得到如下结果:

Column AColumn BColumn C
a1b1NULL
a2b2c4

之前尝试用WHERE语句查询,但未匹配到的行无法被保留,需要保留未匹配行并以NULL填充对应字段。

解决方案

用**左连接(LEFT JOIN)**就能解决这个问题,它会保留左表(你的外部数据集)的所有行,右表匹配不上的字段自动填NULL。因为你没有建表权限,直接用VALUES子句把外部数据集写成临时数据就行,不用创建新表。

示例SQL语句如下:

SELECT 
    ext.`Column A`,
    ext.`Column B`,
    t.`Column C`
FROM 
    (VALUES 
        ('a1', 'b1'),
        ('a2', 'b2')
    ) AS ext(`Column A`, `Column B`)
LEFT JOIN 
    target_table t ON ext.`Column A` = t.`Column A` 
                  AND ext.`Column B` = t.`Column B`;

关键说明:

  • 别把关联条件放到WHERE里:这就是你之前失败的原因——WHERE是在JOIN完成后过滤数据,会把左表没匹配上的行直接删掉;而LEFT JOIN的ON条件是在关联时处理,没匹配上的右表字段会留NULL,左表的行全部保留。
  • 关联时要同时匹配Column A和Column B,这样只有两个字段都对应上时,才会取出目标表的Column C值,否则返回NULL,正好符合你要的结果。

内容的提问来源于stack exchange,提问作者Milosu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 00:22:07