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

如何关联Emp表与Name表,输出匹配正确姓名或全量员工数据?

解决Emp表与Name表的匹配查询需求

需求说明

现有Emp表中同一员工ID对应多个姓名,Name表存储各ID对应的正确姓名,需实现:

  • 若Emp表的ID在Name表中存在,仅输出Emp表中与Name表姓名匹配的行
  • 若Emp表的ID未在Name表中出现,输出该ID对应的所有行

表结构示例

Emp表

id name   status
1  David   0
1  James   1
2  Kelvin  0
2  John    1

Name表

id    Name
1     James

预期输出

Id Name status
1 James  1
2 Kelvin 0
2 John   1

解决方案SQL

可以通过左连接+条件筛选或者EXISTS逻辑判断实现需求,以下是两种可行写法:

方法1:左连接结合条件

SELECT e.id, e.name, e.status
FROM Emp e
LEFT JOIN Name n ON e.id = n.id
WHERE (n.id IS NOT NULL AND e.name = n.Name)
   OR n.id IS NULL;

方法2:EXISTS逻辑判断

SELECT e.id, e.name, e.status
FROM Emp e
WHERE EXISTS (
    SELECT 1 
    FROM Name n 
    WHERE n.id = e.id AND n.Name = e.name
)
OR NOT EXISTS (
    SELECT 1 
    FROM Name n 
    WHERE n.id = e.id
);

逻辑说明

两种写法核心逻辑一致:

  1. 筛选出Emp表中ID在Name表存在且姓名匹配的行
  2. 同时筛选出Emp表中ID未出现在Name表的所有行
  3. 将这两部分结果合并返回,即可满足需求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 02:10:57