也可SET SHOWPLAN_ALL ON查看语句执行方式和语句预计所需资源的详细信息。

解决方案 »

  1.   

    先是子查询 select max([date]) from @tb1 where item=a.item得到 max值
    然后select  a.*  from     @tb1 a where
      

  2.   

    楼上,
    select max([date]) from @tb1 where item=a.item
    里面有item=a.item
    这个item=a.item是什么意思?
      

  3.   

    这个item=a.item是什么意思?item表示@tb1里面的字段,a.item表示@tb1 a里面的字段。这实际上就是一个自联接,你可以吧它理解为两个不同的表。上面的语句可以差分为:
       select 变量=max([date]) from @tb1,@tb1 a where item=a.item   select  * from     @tb1 where    [date] =变量
      

  4.   


    select 
        a.*
    from
        @tb1 a
    时查出 a.item
    同时 a.item作为子查询where的条件 在子查询里优先级最高
    作为 select max([date]) from @tb1的条件
    最后查询结果和外面的a.[date]字段做匹配
      

  5.   

    先 select max([date]) from @tb1 where item=a.item再 select  a.*  from  @tb1 a where
      

  6.   

    先取A
    然后选择最大
    再select a.*
      

  7.   

    select max([date]) from @tb1 where item=a.item
    这一句有几条数据?
      

  8.   

    上面写的很明白了 不要以c++的思维去考虑sql sql是结构查询
    select max([date]) from @tb1 where item=a.item查出来的东西当然是一条
    但item一共有三个 分三次每次一条 最后外面总的记录也是三条