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

SQL Server查询:关联服务表与员工表获取带ID的员工姓名

解决SQL Server多表关联查询需求

嗨,作为SQL Server新手,这种需要关联同一张表多次的场景其实挺典型的,咱们直接上方案就行~

核心思路是多次关联Workers表,每次给它一个不同的别名,这样就能分别匹配Services里的ID_W1、ID_W2、ID_W3,进而取出对应的工人姓名。

完整查询语句

SELECT
    s.Date,
    s.Time,
    s.Service_Name,
    s.ID_W1,
    w1.Name AS Name_W1,
    s.ID_W2,
    w2.Name AS Name_W2,
    s.ID_W3,
    w3.Name AS Name_W3
FROM
    Services s
LEFT JOIN
    Workers w1 ON s.ID_W1 = w1.ID_W
LEFT JOIN
    Workers w2 ON s.ID_W2 = w2.ID_W
LEFT JOIN
    Workers w3 ON s.ID_W3 = w3.ID_W;

关键细节说明

  • 用LEFT JOIN而不是INNER JOIN:如果Services里的某个ID_W(比如ID_W2)为NULL,或者对应的工人记录在Workers表里不存在,LEFT JOIN会保留这条服务记录,对应的Name_W字段会显示为NULL;如果用INNER JOIN,这条记录会被过滤掉,你可以根据实际需求调整关联类型。
  • 表别名的使用:给Workers表分别起别名w1、w2、w3,是为了区分三次关联的同一个表,避免字段冲突和语法错误。
  • 字段别名:通过AS给工人姓名字段起Name_W1这类别名,正好匹配你需要的结果表字段名。

如果还有其他延伸需求,比如要拼接Name和Last Name成完整姓名,或者要过滤特定日期范围的服务记录,随时提出来就行~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:28:41