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

如何创建SQL视图:将Location表ID替换为User表匹配邮箱

问题:将Location表的ID字段替换为对应邮箱创建视图

现有两张表:

  • Location表字段:Location、Region、Senior_ID、Junior_ID、Manager_ID
  • User表字段:Name、ID、Email

需求是创建一个视图,把Location表中的各类ID字段直接替换为User表中匹配ID对应的邮箱(不是新增列)。之前尝试用SELECT结合CASE WHEN语句,结果会生成新列,求可行的SQL实现方案。

Location表结构

LocationRegionSenior_IDJunior_IDManager_ID
1ACBxyz_123xyz_456
2YJTxyz_123xyz_456xyz_789
3HUPxyz_456xyz_789

User表结构

NameIDEmail
Markxyz_123Mark@gmail.com
Tobyxyz_456Toby@gmail.com
Elenaxyz_789Elena@gmail.com

期望视图结构

LocationRegionSenior_mailJunior_mailManager_mail
1ACBMark@gmail.comToby@gmail.com
2YJTMark@gmail.comToby@gmail.comElena@gmail.com
3HUPToby@gmail.comElena@gmail.com

解决方案

使用**多次左连接(LEFT JOIN)**关联User表,分别匹配不同的ID字段,直接取出对应的邮箱并重命名为目标列名即可,不会生成多余列,同时保留原表的空值:

CREATE VIEW Location_Email_View AS
SELECT
    l.Location,
    l.Region,
    u_senior.Email AS Senior_mail,
    u_junior.Email AS Junior_mail,
    u_manager.Email AS Manager_mail
FROM Location l
LEFT JOIN User u_senior ON l.Senior_ID = u_senior.ID
LEFT JOIN User u_junior ON l.Junior_ID = u_junior.ID
LEFT JOIN User u_manager ON l.Manager_ID = u_manager.ID;

说明

  • 对User表做三次左连接,分别对应Senior_ID、Junior_ID、Manager_ID的匹配,确保每个ID都能关联到对应的邮箱
  • 左连接(LEFT JOIN)可以保留Location表中ID为空的记录,对应邮箱列也会显示为空,符合需求
  • 通过AS关键字将Email字段重命名为目标列名,直接替换原ID列的位置,不会新增额外列

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 06:35:07