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

Oracle SQL:如何查询Orders表所有ID,含Names表无匹配的记录

解决Orders表全量关联Names表的SQL写法

这问题太常见啦!你之前用WHERE ORDERS.ID = NAMES.ID的写法其实是**内连接(INNER JOIN)**的逻辑,它只会返回两张表中ID匹配的记录,所以Orders里ID为3的那条自然查不出来。

要实现保留Orders所有记录、无匹配时Name显示null的需求,你需要用左外连接(LEFT JOIN),它的核心就是优先保留左表(Orders)的所有数据,右表(Names)有匹配就关联对应字段,没匹配的字段自动填充为null。

正确的SQL代码

SELECT
    Orders.ID,
    Names.Name
FROM
    Orders
LEFT JOIN
    Names ON Orders.ID = Names.ID;

效果验证

按照你给出的示例数据:

  • Orders表记录:ID=1、ID=2、ID=3
  • Names表记录:ID=1(对应Name)、ID=2(对应Name)

执行上面的SQL后,返回结果会是:

IDName
1[对应Name]
2[对应Name]
3NULL

完全符合你要的“包含所有Orders表ID,无匹配则Name为null”的要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 10:45:28