MSSql ISNULL查询

时间:2015-10-05 10:28:16

标签: sql-server-2008

1. ID
2. Name

订单表有两列

ID    Name
121   abc
124   def

和订单中的数据

<ul class="nav navbar-nav navbar-right">
    <li id="facebook">
        <a href="#" target="_blank"><i class="fa fa-lg fa-facebook"></i></a>
    </li>  
    <li id="twitter">
        <a href="#"  target="_blank"><i class="fa fa-lg fa-twitter"></i></a>
    </li> 
    <li id "google-plus">
        <a href="#"  target="_blank"><i class="fa fa-lg fa-google-plus"></i></a>
    </li> 
</ul>

第一个查询不返回任何结果,而第二个查询则给出任何结果。有什么区别

1 个答案:

答案 0 :(得分:1)

第一个表单在其FROM子句中使用子查询作为表源;它可以在零行和多行之间返回。

对于子查询返回的每一行,将评估ISNULL表达式。但是,如果子查询没有返回任何行,则最终输出不包含任何行。

第二种形式使用SELECT而没有FROM子句 - 它将始终生成一个只包含一行的结果集。然后它还使用标量子查询(通过在预期标量值的位置引入子查询) - 必须产生零或一个结果。如果子查询产生零结果,则NULL被替换。

因此,两者之间的区别在于第一个查询可以在零行和多行之间返回,并且为每行计算ISNULL表达式。而第二个查询总是只产生一行,而如果子查询返回多个结果,则会产生错误。