如何将表中多列ID替换为对应名称并保留空值
正确SQL查询语句实现需求
原SQL存在两个关键问题:
- 关联条件错误:第二个和第三个JOIN的关联字段错误引用了
b.ID,应该分别对应各自别名的ID(bb.ID、bc.ID) - 使用内连接(
JOIN):当Table1中ProcessID或DeliverID为空时,内连接会过滤掉这些记录,无法得到完整结果,需改用左连接(LEFT JOIN)
正确的SQL语句如下:
SELECT a.ID AS Table1ID, b.Name AS Receiver, bb.Name AS Processor, bc.Name AS Delivered FROM Table1 AS a LEFT JOIN Table2 AS b ON a.ReceiveID = b.ID LEFT JOIN Table2 AS bb ON a.ProcessID = bb.ID LEFT JOIN Table2 AS bc ON a.DeliverID = bc.ID
说明:
- 使用
LEFT JOIN确保Table1的所有记录都被保留,即使关联的Table2中没有匹配的ID(对应结果中的空值) - 每个
LEFT JOIN分别关联Table2的不同别名,对应Table1的ReceiveID、ProcessID、DeliverID字段 - 通过
AS给字段设置别名,与期望的结果列名一致
内容的提问来源于stack exchange,提问作者Pekzz
相关产品推荐
相关产品推荐

