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

SQL LEFT JOIN的IN连接条件改为多AND相等连接是否正确?

SQL语句改写正确性分析

你的改写完全不正确,两者逻辑天差地别:

  1. 原语句逻辑
    原SQL:
LEFT JOIN #Phones P ON P.Phone_SID IN (F.MobilePhone_SID, F.HomePhone_SID, F.OfficePhone_SID, F.PrimaryPhone_SID, F.SecondaryPhone_SID)

这个条件的意思是:只要P.Phone_SID匹配F表中五个手机号SID字段里的任意一个,就能关联到对应的#Phones记录。

  1. 改写后语句逻辑
    改写后的SQL:
Left join #Phones P ON P.Phone_SID = F.MobilePhone_SID AND P.Phone_SID =F.HomePhone_SID AND P.Phone_SID =F.ScondaryPhone_SID

这个条件要求P.Phone_SID同时等于F.MobilePhone_SID、F.HomePhone_SID、F.ScondaryPhone_SID三个字段的值——只有当这三个字段的值完全相同时,才会关联成功,这和原逻辑完全相悖,几乎得不到符合预期的结果。

另外还要注意:你改写时遗漏了原语句里的OfficePhone_SID和PrimaryPhone_SID,还出现了拼写错误:ScondaryPhone_SID应该是SecondaryPhone_SID。

内容的提问来源于stack exchange,提问作者Veera Brahmam Vunnam

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 07:31:00