繁体   English   中英

如何处理多个SQL表连接中的NULL值

[英]How to handle NULL values in multiple SQL table joins

我有一个SQL查询从四个表中提取数据,但如果第三个表(SC_FeatureCart)中没有数据,则查询不返回任何数据。

我知道包含NULL的列在创建连接时不匹配任何值,因此它们被排除在结果集之外但我仍然希望能够从前两个表,SC_NumberCart和SC_Packages返回值,所以任何人都可以帮助建议如何我可以实现这个???

我的SQL查询是:

SELECT SC_NumberCart.Number, SC_Packages.PkgName, SC_Features.FeatureName  
FROM SC_NumberCart 
JOIN SC_Packages ON SC_NumberCart.PkgID = SC_Packages.PkgID 
JOIN SC_FeatureCart ON SC_NumberCart.NumberID = SC_FeatureCart.NumberID 
AND SC_NumberCart.RecordID = SC_FeatureCart.RecordID 
JOIN SC_Features 
ON SC_FeatureCart.FeatureID = SC_Features.FeatureID 
WHERE SC_NumberCart.CpyID = @CpyID

如果SC_FeatureCart表中有数据,我可以使用此SQL查询查看并显示结果,如下所示。

<table id="t2">
      <tr>
        <th>Number</th>
        <th>PkgName</th>
        <th>FeatureName</th>
      </tr>
      <tr>
        <td>01157710125</td>
        <td>01 / 02 Medium (Landline)</td>
        <td>Call Whisper</td>
      </tr>
    </table>

非常感谢,

克里斯

使用外连接而不是内连接

使用LEFT JOIN表示您希望左表中的结果,即使右表中没有匹配项也是如此。

SELECT SC_NumberCart.Number, SC_Packages.PkgName, SC_Features.FeatureName  
FROM SC_NumberCart 
LEFT JOIN SC_Packages ON SC_NumberCart.PkgID = SC_Packages.PkgID 
LEFT JOIN SC_FeatureCart ON SC_NumberCart.NumberID = SC_FeatureCart.NumberID 
                            AND SC_NumberCart.RecordID = SC_FeatureCart.RecordID 
LEFT JOIN SC_Features ON SC_FeatureCart.FeatureID = SC_Features.FeatureID 
WHERE SC_NumberCart.CpyID = @CpyID

是对不同类型连接的一个很好的解释

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM